前言
我们知道,在我们编程开发的时候,和别人合作,会遇到对同一个项目开发,你可能写得他快,会导致对项目的覆盖。或者你还没写完就提交上去,会导致别人看不懂,但是不提交上去又有丢失进度的风险。
特别是对于大型的项目,不对项目做出分支,会造成很多冲突,你的可能会把被人的覆盖掉,别人会不乐意这样做,无形中就造成了矛盾。
利用Git的分支和合并管理方法,在我们所在的项目(master分支)上建立一个分支,你在分支上的可以进行更改包括上传自己的进度,等到完成时在合并到 master 分支上。还有退回版本等等操作。
这里可以这样想,我们从 git clone
开始,也就是创造了一个本地分支,从远端仓库复制过来,经过本地的修改,然后推送回去 git push
就是合并了。
正文
在这里我们想象 每次的提交的时候,Git 就像把他们串成一条时间线。刚开始的时候,只有一条时间线也叫做主分支,master
分支。head
是指向的是当前分支。
每次提交,master
分支都会前进一步,后面则是越来越长。
当我们创建新分支例如dev
时候,就有新建了一条线。然后修改了head
的指向。
现在,对dev
的修改和提交都不会对master
影响,没次提交dev
节点就往前一步。
加入dev
完成,就可以合并到master
上,同时head
指会master
示例
以上述为例,首先,创建dev
分支,然后切换到dev分支
1 | git checkout -b dev |
这里相当于两条命令,-b 表示创建并切换。
1 | git branch dev |
通过git branch
查看当前分支
1 | $ git branch |
如果是当前分支,前面会标记*
号。后面也就是对分支的正常惯例提交方式(这里假设我添加了 test.txt
)
1 | $ git add test.txt |
切换到master
上,我们查看一些没看到test.txt
文件,因为那是在dev
分支上,现在我们进行合并。
1 | $ git merge dev |
这里的git merge
使用于合并指定分支到当前分支。
常用指令
- 查看分支:
git branch
- 创建分支:
git branch (name)
- 切换分支:
git checkout (name)
- 创建和切换分支:
git checkout -b (name)
- 合并某个分支到当前分支:
git merger (name)
- 删除分支:
git branch -d (name)