4.学习方法: http://blog.csdn.net/caomiao2006/article/details/44652067
使用场景:当在新分支中开发一个新功能的过程中,开发期间涉及的文件数比较多,提交的次数也非常多,同时整个提交的过程非常的复杂,在最后合并的时候,
需要移除某些修改的文件并且将提交次数整理为一次 commit
将多次提交(commit)转化为一次提交,或者你的提交里面有其他人的提交(在合并其他人分支进行测试程序,测试完毕后需要将其他人分支的提交的代码进行清除)
- git checkout develop ====> git pull ====> git checkout 你的分支名
- git rebase -i origin/devlop
3.此时会弹出一个窗口:第一行的pick保留,下面的pick(如果本行commit是自己的)可以改为 s(合并之前的提交)在这个文本中第一行是最早的提交记录,
p, pick = 使用此commit。(p是pick命令的缩写,两种方式均支持)
r, reword = 使用此commit, 编辑commit message
e, edit = 使用此commit,但是不编辑commit message,保持原有commit message, 这里会停在该次提交,
s, squash = 使用此commit,但是合并到前一个commit中去
f, fixup = 和squash类似,但是放弃此commit的message
不想要中间的第3次commit,即"third"我不想要了,我想修改第2次提交"second"的内容,修改第1次提交的message,合并第四和第五次提交为一个提交。
编辑这些行,如下图所示,第一个提交使用r,第二个提交使用edit,第三个提交删除行,第四个提交使用pick,第五个提交使用squash。修改完成后,保存退出。
如果不使用某一个commit,则删除此行。
如果所有行都被删除,则放弃rebase操作。
如果不是自己的直接讲本行代码删掉就相当于把别人的这次提交的代码删除掉,改完之后 - ctrl + o, 回车, ctrl + x
5.如果这里有冲突,他会暂停,使用git gui查看并解决冲突,
git add 修改后的文件
git rebase --continue 继续合并,合并完成之后
放弃本次压缩操作使用 git rebase --abort
6.弹出一个commit message对话框,将之前所以提交的commit的message注释/删除掉。只留下一条,
7.git push -f origin 分知名即可
解决。
网友评论