如何删除远程git commit HEAD?

时间:2015-03-27 17:55:39

标签: git github

我用git merge搞砸了很多代码,并且在这个过程中也丢失了我的工作。

我处于这种情况:

  • commit A - 我先从遥控器中取出并合并。
  • commit B - 我推送了合并的提交..
  • commit C - 我仍然有一些合并冲突,所以我再次合并并推送。

现在,远程包含C提交HEAD。它完全有缺陷,而且我丢失了我的代码。我能解决这个问题的唯一方法是删除提交BC。恢复提交A并重新开始工作。

请告诉我,是否有一种安全的方法可以删除提交BC而不会搞砸其他提交?如果可能,建议其他解决方案。

谢谢..

2 个答案:

答案 0 :(得分:0)

您可以签出提交A,从中创建一个新分支,然后推送此分支并在将来使用它。

基本上,做:

  • git checkout A您现在将处于独立状态
  • git checkout -b new_branch根据需要验证所有更改
  • git push origin new_branch

现在,您可以继续使用此new_branch。

如果您需要覆盖旧分支本身,则有两个选项

  • 要么在上面的最后一步用力推动你的分支
    • git push origin new_branch:old_branch_on_origin
  • 或者在本地重置分支上的HEAD并强行推送它
    • git checkout old_branch
    • git reset HEAD --hard A
    • git push origin -f old_branch

上面第二种方法的问题在于,如果其他开发人员已经提交了更改并开始处理它们,那么由于强制推送,他的计算机上的分支历史记录可能会失去同步。

答案 1 :(得分:0)

我找到了解决方案:

http://lrotherfield.com/blog/delete-remote-git-repo-to-specific-commit/

步骤1:在本地重置头部(将A视为提交ID)

git reset --hard A

步骤2:重置遥控器中的头

git push -f origin A:master

成品..

现在我的提交B和C从遥控器中删除,头部指向A.