如题,最近因为项目采用pr的方式进行提交,但是由于各种原因,commit的次数过于多且大部分无用,因此想着去合并多次commit,使pr看起来简洁易懂。
首先用git log --oneline
可以看见 25d525d-38fe6d8次提交我想合并到一个提交里面, git rebase -i 55f626d
,55f626d次提交不会被包括。
会进入下图界面
介绍一些常用:
pick 使用当前提交 (可以使用首字母p代替 下面的全部用首字母代替)
r 使用当前提交,但重新编辑提交信息
e 使用提交,但停止修改
s 使用提交,但会合并早期的提交信息
d 移除提交
tip: squash and merge 是pr中比较常用的
tip: 第一行必须用能保留提交的关键字修饰 如r、p、e
如果出现了冲突 就要根据提示先解决冲突 然后git rebase --continue ...
最后修改好了之后 git log --oneline
可以看见本地的commit记录已经修改好了,然后将之推到远程。
git push origin master
然后你就会发现 会提示你先拉取最新的代码,拉取之后再提交你会发现 先前合并的提交并没有消失反而会多了两行代码!
后来查资料发现在推送的时候一定不能先pull 因此每次合并前要保证是最新的代码。
然后 再来一次 git rebase -i 除了最新生成的一次提交,别的都用 d
然后再强制提交一次
git push -f origin master
就可以了