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