2012-04-21 100 views
6

我想壁球我的最后2个提交在了一起,所以做了git rebase,以下列方式:撤消错误而压垮提交在GIT

git rebase -i HEAD~2 

但由于一个错字,我实际最终推到起源是:

git rebase -i HEAD-3 

现在,在Github Pull Request它显示犯下一些其他不相关的承诺。所以基本上,我想删除不属于我的提交06674f0,同时在此PR中保留fcea5e0

如何解决所造成的简单的拼写错误的烂摊子?

回答

19

编辑:检查您引用日志与

git reflog 

选择提交以前你的第一个底垫和下面适当数量的替换X:

就撤消前底垫和重做:

git reset --hard [email protected]{x} 
git rebase -i HEAD~2 
.. 
git push -f origin master 

删除您的拉取请求并发出一个新请求。

+0

它可以无需移除现有的拉请求来实现? – CuriousMind 2012-04-21 15:26:34

+0

是的,它可能可以。我只是在想,你可能想在你使用它的时候删除它。 – ralphtheninja 2012-04-21 15:33:08

+0

我试过了,但没有奏效。而不是我想合并的两个提交失去了,现在试图运行'git rebase -i HEAD〜2'从历史的更远处拿起两个提交 – CuriousMind 2012-04-21 15:51:27

0

两个​​和git reset --hard [email protected]{x}没有为我工作。

我想一个脚本来反正做到这一点,所以我做了以下。

BACK_2_SHA=`git reflog show --pretty=format:'%H' -n x | tail -n 1` 
git reset --hard $BACK_2_SHA