如何删除远程 git 提交 HEAD?

How to delete a remote git commit HEAD?

我用 git 合并弄乱了很多代码,并且在此过程中也丢失了我的工作。

我现在的情况是:

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

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

谢谢..

您可以签出提交 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

上面第二种方法的问题是,如果其他开发人员已经拉入您的更改并开始处理它们,他机器上的分支历史记录可能会因为强制推送而变得不同步。

我从这里找到了解决方案:

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

第 1 步:用于在本地重置 head,(将 A 视为提交 ID)

git 重置 --hard A

第 2 步:用于在遥控器中重置头部

git push -f origin A:master

完成..

现在我的提交 B 和 C 从远程删除,头部指向 A。