![2f4b02b581a0dea77d17426b18271100.png](https://img-blog.csdnimg.cn/img_convert/2f4b02b581a0dea77d17426b18271100.png)
背景
使用GIT这么久了从来没有深层次的研究过,一般情况下,只要会pull
,commit
,push
等几个基本提交命令就可以了,公司的项目分支管理这部分操作一直都是我负责,对于分支的合并我一直都使用merge
操作,也知道还有一个rebase
,但是一直不会用,百度了很多,说的基本都差不多,按照步骤在公司项目里操作,简直就是噩梦,只要rebase
就出现噩梦般的冲突,所以一直不敢用,今天自己捣腾了一番终于领略到一些,不多说直接进入干货。
先来两张合理使用rebase
,merge
和只使用merge
的对比图
使用 rebase
![48a3028bad7e6381919d9aa69c2f5b85.png](https://img-blog.csdnimg.cn/img_convert/48a3028bad7e6381919d9aa69c2f5b85.png)
使用 merge
![45fd5b4ac079edba4e77ad4a2ceccfcb.png](https://img-blog.csdnimg.cn/img_convert/45fd5b4ac079edba4e77ad4a2ceccfcb.png)
使用 rebase
和 merge
的基本原则:
- 下游分支更新上游分支内容的时候使用
rebase
- 上游分支合并下游分支内容的时候使用
merge
- 更新当前分支的内容时一定要使用
--rebase
参数
例如现有上游分支 master,基于 master 分支拉出来一个开发分支 dev,在 dev 上开发了一段时间后要把 master 分支提交的新内容更新到 dev 分支,此时切换到 dev 分支,使用 git rebase master
等 dev 分支开发完成了之后,要合并到上游分支 master 上的时候,切换到 master 分支,使用 git merge dev
一、创建两个GIT项目,project1
和 project2
,同时分别加入三个文件并提交master
分支
$ git clone git@gitlab.xpaas.lenovo.com:baiyl3/project1.git
$ cd project1
$ touch file1 file2 file3
$ git add .
$ git commit -m '在项目一中初始化三个代码文件'
$ git push -u origin master
$ git clone git@gitlab.xpaas.lenovo.com:baiyl3/project2.git
$ cd project2
$ touch file1 file2 file3
$ git add .
$ git commit -m '在项目二中初始化三个代码文件'
$ git push -u origin master
从代码提交时间轴图看两个项目现在的状态都一致