2013-03-13 160 views
0

我试了好几个小时才回到以前的提交。谁能帮我? 我推动主分支到我的远程回购(d34 ...提交),但它是我想要的d6f(第二下)提交。需要撤消GIT提交

当我尝试更改为该提交时,出现此错误:您确定要签出'd6fa4 ... [截断]'吗?

这样做会使你的工作拷贝“分离的头”

任何人都可以请帮我删除最后从我的开发和掌握分支机构提交? 谢谢!

更多的笔记,因为我没有清楚地解释这个问题: 当我结帐时提交d6fa4 ...代码库正是我想要的。合并提交(我已经推出)将主人和开发分支汇集在一起​​。 如果我检查出d6fa4,我会得到一个分离的头,但是现在代码库正确无误。问题是,我无法弄清楚如何重置我的主人并开发分支到这个提交。

我希望能让它更清晰。再次感谢!!

SourceTree Screenshot

+0

尝试'git reset --hard d34','git revert d34'。请注意,'reset --hard'将永久丢弃任何未跟踪的更改。 – 2013-03-13 05:33:33

+0

您是否需要将恢复的更改推送到远程存储库?或者只是修复你的本地征募? – selbie 2013-03-13 05:35:21

回答

1

既然你似乎已经推动了承诺,你可以这样做:

git revert d349d18 
git push origin master 

如果你不关心改变推历史(特别是如果没有其他人工作的回购),做到:

git reset --hard d6fa474 

(你可以做到这一点的主机和开发)

+0

我不能'恢复'd34,因为它是一个合并提交。我得到错误:“错误:提交d349d ...是一个合并但没有-m选项被给出。” – zbinsd 2013-03-13 06:10:29

+1

只要尝试给予'-m 0' – manojlds 2013-03-13 06:12:23

+0

这个解决方案实际上对我有用。我必须添加-m 0.谢谢@manojids – zbinsd 2013-03-13 06:34:50

1

我建议不要删除或恢复推送提交。 创建一个新的提交,恢复你所做的并推送它。如果你与其他人一起工作,这可能会导致存储库中的许多不好的事情。

+0

您不应该删除(例如'reset --hard')推送提交。但对于推送提交,'revert'很好 - 它们是我使用它的主要内容。 – 2013-03-13 06:11:10

+0

@EricWalker但如果有人已经拉你的提交?那么,它会给该用户带来问题 – stdcall 2013-03-13 06:47:15

+0

回复提交撤消了在回复的提交中完成的操作,但它不会重写历史记录,因此在其他情况下,其他人只会在提取时快进。如果他们已经做出改变,他们将不得不合并,但是他们也会合并以进行任何其他类型的改变,所以恢复提交没有做任何特别的事情。 – 2013-03-13 06:55:52