前端小白的学习之路--git学习

介绍

git是分布式版本控制系统git

集中式与分布式:集中式有一个中央服务器,须要联网进行操做。分布式,每一个人都有一个版本库github

1. 安装git

  • 下载git->安装完成后找到git bash,打开是一个命令行(说明安装成功)bash

  • 在命令行输入如下服务器

引号内部填本身信息
$ git config --global user.name "Your Name" 
$ git config --global user.email "email@example.com"

2. 建立版本库

版本库又名仓库,英文名repositoryapp

使用

git有三个区,工做区,暂存区,版本库。工做区add以后就进入了暂存区,暂存区的文件commit以后进入版本库ssh

1. 添加

注:如下文件名都带后缀分布式

git add "文件名"

2. 提交

注意:提交是将暂存区的文件都提交到版本库里fetch

git commit -m "操做名称"

3. 查看状态

git status

4. 查看文件内容

cat "文件名"

5. 查看git日志

git log

如:commit后接的就是版本号,随机生成的命令行

commit 980993de744a8886692ed79fc7f4cdd00ec15959 (HEAD -> master)
Author: zouyou <>
Date:   Sat Apr 11 14:35:04 2020 +0800

    update commit

commit ea799348f2b1ccc7d046f8bd61c6b193b79bdc18
Author: zouyou <>
Date:   Sat Apr 11 14:33:07 2020 +0800

    git tracks changes

- 回退版本3d

  1. 使用HEAD
git reset --hard HEAD^   HEAD^:上个版本  HEAD^^:上上版本
  1. 使用版本号,只须要写前几个数就行
git reset --hard ea799348f

若是忘记了版本号,可使用reflog查看历史的变化,无论有没有回退

git reflog

6. 查看文件变化

git diff

7. 撤销修改

  1. 撤销工做区的修改,至关于直接操做文件,将改变撤销。
git restore 文件名
  1. 撤销暂存区的提交,退回到工做区,可是文件仍是修改事后的,要想文件撤销修改,重复1步骤
git resore --staged 文件名

8. 删除文件

  1. 要同时删除工做区以及版本库,删除工做区能够手动删除等。。如下是删除版本库
git rm 文件名
  1. 误删工做区文件,可是已经上传到版本库了,能够经过版本库恢复
git checkout 文件名

9. 远程仓库:github

  1. 在github上建立一个仓库,记住ssh码或者https地址
  2. 输入如下,建立远程链接,会有输入帐号密码
$ git remote add origin (ssh码)/(hhtps)
  1. 将文件上传到github
$ git push -u origin master

注:因为远程库是空的,咱们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在之后的推送或者拉取时就能够简化命令。

上传完成以后,只要本地进行了commit,就能够经过如下命令

git push origin master //这里与上面是差很少同样的语法

总结:要关联一个远程库,首先在远程建立好一个库,记住SSH码,再进行链接 git remote add origin ssh码

上传:第一次上传时git push origin -u master,以后就不用加-ugit push origin master

这些命令里面,origin其实就是远程仓库的名字,一般命名为origin

  1. 从远程仓库克隆到本地

首先在github上找到一个仓库再复制其ssh码,在git bash上输入命令行

git clone ssh码

注意:在哪一个文件夹打开的git bash就克隆到哪一个文件夹下面。

10. 分支管理

1. 分支介绍

分支能够实现相似于开发版系统,完成以后再推送到主干,就是稳定系统。以下,两个分支合并到主干

learn-branches

在git中,master分支是主干,一开始master指向这根主线,head指向master,因此head是充当一个指向当前点的指针,能够指向主干,也能够指向分支。

git-br-initial

查看分支,显示全部分支,当前分支前会有*

git branch
2. 分支建立

建立一个分支dev并切换到此分支 -b的做用是建立并切换

git checkout -b dev
等价于
git branch dev  //建立分支dev
git checout dev // 切换到分支dev

注意:每个分支的工做区,暂存区,版本库都是独立的,切换分支以后,都会不同。

Git鼓励大量使用分支:

查看分支:git branch

建立分支:git branch

切换分支:git checkout 或者git switch

建立+切换分支:git checkout -b 或者git switch -c

合并某分支到当前分支:git merge

删除分支:git branch -d

查看分支图:git log --graph

-- 文件冲突

git-br-feature1

出现这种状况,两个分支没法merge,必须手动解决。

$ git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.

git status也能够显示冲突文件,在冲突文件里打开能够看到标记。

Git用<<<<<<<=======>>>>>>>标记出不一样分支的内容

3. bug分支

当正在分支dev上进行一个工做时,忽然要修复一个bug(如在主干上),因此须要先将dev正在进行的工做隐藏一下,先去把bug修复。Git还提供了一个stash功能,能够把当前工做现场“储藏”起来,等之后恢复现场后继续工做:

git stash //能够将在暂存区的文件(还未提交)隐藏,使用status也看不到

能够查询stash里隐藏的东西

git stash  //=>例如:stash@{0}: WIP on dev: f52c633 add merge

修复完master的bug以后,恢复dev的现场:

git stash aplly //对现场进行恢复,此时stash里还有,须要进一步
git stash drop //对stash里的东西删除
同时还能够从stash里一步步恢复:git stash apply stash@{0}
等价于一句话
git stash pop

注:因为dev原本就是master的分支,那么dev也可能存在主干刚刚修复的bug,因此git有个功能能够实现bug的修复复制。由此能够推出,能够在分支解决bug在主干复制便可

git cherry-pick <版本号>
这里的版本好就是刚刚在主干修复bug后commit以后的版本号

开发一个新feature,最好新建一个分支,相似于bug分支;

若是要丢弃一个没有被合并过的分支,能够经过git branch -D 强行删除。

4. 远程合做

要查看远程库的信息,用

git remote //一般远程库是origin

也能够用git remote -v,能够返回抓取和推送的地址,以下

origin  https://github.com/zy116/first-blog.git (fetch)
origin  https://github.com/zy116/first-blog.git (push)

-- 推送分支

git push origin dev //推送分支
git push origin master //推送主干

可是,并非必定要把本地分支往远程推送,那么,哪些分支须要推送,哪些不须要呢?

  • master分支是主分支,所以要时刻与远程同步;
  • dev分支是开发分支,团队全部成员都须要在上面工做,因此也须要与远程同步;
  • bug分支只用于在本地修复bug,就不必推到远程了,除非老板要看看你每周到底修复了几个bug;
  • feature分支是否推到远程,取决于你是否和你的小伙伴合做在上面开发。

总之,就是在Git中,分支彻底能够在本地本身藏着玩,是否推送,视你的心情而定!

-- 抓取分支

一般都会在masterdev分支分别推送各自的更改,当一我的把本身的分支都推送上去以后,另外一我的克隆下来的只能看到master分支,若是要在dev分支上开发,必须创建一个远程分支到本地

git switch -c dev origin/dev

当另外一我的推送上了一个东西后,你也要推送,此时就会发生矛盾。另外一我的的最新提交和你试图推送的提交有冲突。

此时会提示你进行git pull操做,可是会提示错误。

须要指定本地dev分支与远程origin/dev分支的连接,设置devorigin/dev的连接

git branch --set-upstream-to=origin dev

再进行pull

git pull

这时候pull成功,会在冲突文件里标注,须要手动解决

所以,多人协做的工做模式一般是这样:

  1. 首先,能够试图用git push origin <branch>推送本身的修改;
  2. 若是推送失败,则由于远程分支比你的本地更新,须要先用git pull试图合并;
  3. 若是合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!

若是git pull提示no tracking information,则说明本地分支和远程分支的连接关系没有建立,用命令git branch --set-upstream-to origin/

小结

  • 查看远程库信息,使用git remote -v
  • 本地新建的分支若是不推送到远程,对其余人就是不可见的;
  • 从本地推送分支,使用git push origin branch-name,若是推送失败,先用git pull抓取远程的新提交;
  • 在本地建立和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
  • 创建本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
  • 从远程抓取分支,使用git pull,若是有冲突,要先处理冲突。

感谢廖雪峰大佬的git教程,文中有一些都是直接copy过来的,原教程在这哦 git教程

相关文章
相关标签/搜索