我正在做很长的提交git rebase
。我不小心--skipped
一个承诺,我遇到了一些冲突。我应该完成git rebase --continue
。撤销git rebase --skip - 在rebase期间重新应用提交
有没有办法在这个重组阶段期间重新应用此先前的提交,然后继续进行rebase?我看到
一种方法是
- 创建的最后一个分支提交停在这一点上,底垫这是正确应用
- 重启底垫开始与先前跳过的提交。
或者我可以做一个樱桃选择,而处于rebase阶段?
我正在做很长的提交git rebase
。我不小心--skipped
一个承诺,我遇到了一些冲突。我应该完成git rebase --continue
。撤销git rebase --skip - 在rebase期间重新应用提交
有没有办法在这个重组阶段期间重新应用此先前的提交,然后继续进行rebase?我看到
一种方法是
或者我可以做一个樱桃选择,而处于rebase阶段?
我找到了一种方法,其“为我工作”:
在衍合很多事情在.git/rebase-apply
-path正在发生。其中有一个文件叫next
。 next
包含的数字对应于驻留.git/rebase-apply-path的文件。该文件包含有关当前正在处理的提交的信息。例如:
$ cat .git/rebase-apply/next
0260
$ less .git/rebase-apply/0260
<info about the commit which is currently processed (and has conflicts)
Git似乎保留了与上述文件一样被忽略的提交。而与已经应用的提交相对应的文件不再存在。我意外跳过的提交被称为0259,该文件仍然存在。
这里是我做过什么:
$ echo "0258" > .git/rebase-apply/next
有了,我说,目前第二百五十八提交处理混帐(这之前的正确应用)。然后我做了
$ git rebase --skip
通知Git忘记这一个,瞧,我可以再次跳过的工作承诺,纠正冲突和--continue
。它工作。
Git非常棒,因为它可以保存基本上所有提交的日志。
找到你的承诺在 “的.git /日志/ HEAD”,打开一个文本编辑器
发现在头文件的SHA
3c8c ...... 2260dc ...全名{[email protected]} 1471276956 -0600提交:保存试用版1,2,3
类型(注类型足够的沙这样混帐知道拉哪一个):
git的结帐-b恢复2260d ...
见链接以供参考:http://blog.screensteps.com/recovering-from-a-disastrous-git-rebase-mistake
您节省了2天的工作时间! –
这在最近版本的Git改变了一点,但我仍然能够使其通过调整这些文件的工作:'混帐底垫,todo'和按照上面的想法“上”。 – goncalossilva
使用git版本'1.9.4.msysgit.1'我可以通过Patrick B.的方法获得成功,我既没有使用'git-rebase-todo'也没有''到''。 – codingdave
恐怕在git rebase --skip之后,这是不可能的。至少对于我来说。我的“.git”文件夹中没有“rebase-apply” – riroo