命令说明

squash

  • 针对提交历史,进行修改,比如合并多个历史为一个
  • 在远端合并develop分支到master分支时,压缩develop分支中的提交
  • 7.6 Git Tools - Rewriting History

rebase

  • 变基操作,通常用于develop分支与master分支出现分叉时,即Amaster分支切出develop并进行了一定修改,此时master分支已经被B新增了提交,导致两者的master历史不一致,因此需要变基使得develop分支的历史信息与master一致
  • git rebase

场景

远程squash后,如何rebase本地develop分支

场景回顾

  • 远程针对develop提交了一个对master的MR请求
  • 在开发完毕,同意合并到master时,远端执行了squash操作,此时develop分支的多个提交被合并为一个
  • 导致此时远端和本地develop分支提交历史不一致
  • 后续如果想继续使用develop分支进行提交,需要保证两端一致

操作

  1. 确保本地分支是develop分支,如果不是,使用git checkout develop切换到develop分支
  2. 使用git rebase -i HEAD~n,其中n表示需要rebase的数量,即远端squash前,提交的commit数量,此时本地会打开一个rebase编辑器
  3. 将第一个提交的pick修改为squash,其他提交修改为fixup,保存提交。这会将后面三个提交合并到第一个提交中
  4. 最后执行git push origin develop操作