如何删除远程 git 提交 HEAD?
How to delete a remote git commit HEAD?
我用 git 合并弄乱了很多代码,并且在此过程中也丢失了我的工作。
我现在的情况是:
- 提交
A
- 我先从远程拉取并合并。
- 提交
B
- 我推送了合并的提交..
- 提交
C
- 我仍然有一些合并冲突,所以我再次合并并推送。
现在远程包含提交 C
作为 HEAD
。它完全有缺陷,而且我丢失了我的代码。我能解决这个问题的唯一方法是我想删除提交 B
和 C
。恢复提交 A
并再次执行工作。
请告诉我是否有安全的方法来删除提交 B
和 C
而不会弄乱其他提交?如果可能,建议其他解决方案。
谢谢..
您可以签出提交 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。
我用 git 合并弄乱了很多代码,并且在此过程中也丢失了我的工作。
我现在的情况是:
- 提交
A
- 我先从远程拉取并合并。 - 提交
B
- 我推送了合并的提交.. - 提交
C
- 我仍然有一些合并冲突,所以我再次合并并推送。
现在远程包含提交 C
作为 HEAD
。它完全有缺陷,而且我丢失了我的代码。我能解决这个问题的唯一方法是我想删除提交 B
和 C
。恢复提交 A
并再次执行工作。
请告诉我是否有安全的方法来删除提交 B
和 C
而不会弄乱其他提交?如果可能,建议其他解决方案。
谢谢..
您可以签出提交 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。