本文目录如下:
1 2 3 4 5 6 | - git merge 默认,fast-forward模式 --no-ff --squash - git rebase - git cherry-pick |
---------------------------------------------正文开始------------------------------------------------------------
-
git merge 参数分支test(以下又叫子分支)
一句话记忆:要合并到谁,就要先切换到谁
理解:在当前分支新建节点,把当前分支和参数分支不同的部分合并到新节点
下面就git merge命令的几个不同选项来对比,前提:当前分支为master1
2
3
4
51. git merge 参数分支test
使用fast-forward模式
当前分支master移动到参数分支test所在的地方,并移动HEAD指针
删除参数分支test后,会丢掉参数分支test信息
1 2 3 4 5 | 2. git merge --no-ff -m "commit描述" 参数分支test 禁用fast forward模式 master分支会生成新提交点,合并主子分支的冲突文件 会有子分支合并进来的引用 |
1 2 3 4 | 3. git merge --squash 参数分支test master生成新的提交点,合并主子分支的冲突文件 不会有子分支合并进来的引用 |
-
git rebase 参数分支master
1
2
3
4一句话记忆:要rebase谁,就切换到谁
理解:将当前分支(test) 超前的节点 在参数分支(master)的基础上重新提交
rebase会将合入分支上超前的节点在待合入分支上重新提交一遍,如下图,B1 B2会变为B1’ B2’,看起来会变成线性历史
-
git cherry-pick 节点commit_id
1
2
3
4前提:当前分支是test
理解:复制节点commit_id所作的修改,在当前分支上也做同样的修改
想把哪个节点merge过来就把哪个节点merge过来,其合入的不是分支而是提交节点
参考:链接