git squash与git rebase
命令说明
squash
- 针对提交历史,进行修改,比如合并多个历史为一个
- 在远端合并
develop分支到master分支时,压缩develop分支中的提交 - 7.6 Git Tools - Rewriting History
rebase
- 变基操作,通常用于
develop分支与master分支出现分叉时,即A从master分支切出develop并进行了一定修改,此时master分支已经被B新增了提交,导致两者的master历史不一致,因此需要变基使得develop分支的历史信息与master一致 - git rebase
场景
远程squash后,如何rebase本地develop分支
场景回顾
- 远程针对
develop提交了一个对master的MR请求 - 在开发完毕,同意合并到
master时,远端执行了squash操作,此时develop分支的多个提交被合并为一个 - 导致此时远端和本地
develop分支提交历史不一致 - 后续如果想继续使用
develop分支进行提交,需要保证两端一致
操作
- 确保本地分支是
develop分支,如果不是,使用git checkout develop切换到develop分支 - 使用
git rebase -i HEAD~n,其中n表示需要rebase的数量,即远端squash前,提交的commit数量,此时本地会打开一个rebase编辑器 - 将第一个提交的
pick修改为squash,其他提交修改为fixup,保存提交。这会将后面三个提交合并到第一个提交中 - 最后执行
git push origin develop操作
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 cv-programmer!




