Git分支中移除中间某几次的提交
2018-02-08 本文已影响164人
mkb2
1.目标:去除中间4次task的提交
目标:去除中间4次task的提交 最终效果图,deb分支去除了4次task的内容简要说明:
文件内容:
init 1;
init 2;
init 3;
task 1;
task 2;
task 3;
task 4;
rank 1;
rank 2;
rank 3;
rank 4;
rank 5;
没输入一行,做一次提交,然后commit
的内容,就是该行文字;
我们这就使用命令行结合sourcetree
一起处理一下~
2.步骤
- 2.1.创建一个分支deb(防止出错,所以先做个缓冲)
- 2.2.选择合适的点做
rebase
- 2.3.合并潜在的冲突
2.1 创建一个分支deb
创建deb2.2 选择合适的点做rebase
我们要删除task1 - task4
,所以我们应该让rank1
链接到inti3
,所以选择init3
作为链接点!!
【总结】删除某些commit
的时候,找到前一个节点。作为rebase
的开始
【重点】切记第一次rebase的时候,第一次解决冲突的时候特别重要,并且非常有迷惑性!
开始决绝冲突【重点】过去我们和同事的共同操作一个文件的时候,有冲突的时候,也和这个图一样,我们过去解决冲突的时候,就是看看那些冲突,并且修改内容,但是上边的图有问题,就是我们看到了HEAD
内容为空,我们自己的rank1
中有这么多,按照过去的理解,那就保留了rank1
的所有内容了,但是这是错误的,我们说过,rank1提交的内容是啥?是rank1;这段文字,所以不应该有task1-task4这样的字样,所以应该给予删除,从而保存正确的数据,所以我说非常有迷惑性!!!
然后继续rebase
,解决冲突,先标记已解决冲突,然后在继续合并
git add .
这个有几种功能,一种是跟踪文件,一种是标记已解决;
当解决完,我们要git rebase --continue
是为了继续合并;
如果提示还有问题,那么就回到sourcetree 中接着看看冲突文件
- 1.决绝冲突文件
- 2.标记已解决
- 3.git rebase --continue
直到最后成功为止
最终效果图,deb分支去除了4次task的内容
如果你感觉一次就能成功,你可以直接使用目标分支
【彩蛋】,如果我们A分支在本地有,同时在远程分支也有,那么可能我们移除本地分支A中的某些commit,可能推不上去了,那么我们可以强推送一波,命令行为git push origin -f
,-f 表示force暴力的意思