我用git merge搞砸了很多代码,并且在这个过程中也丢失了我的工作。
我处于这种情况:
A
- 我先从遥控器中取出并合并。B
- 我推送了合并的提交.. C
- 我仍然有一些合并冲突,所以我再次合并并推送。现在,远程包含C
提交HEAD
。它完全有缺陷,而且我丢失了我的代码。我能解决这个问题的唯一方法是删除提交B
和C
。恢复提交A
并重新开始工作。
请告诉我,是否有一种安全的方法可以删除提交B
和C
而不会搞砸其他提交?如果可能,建议其他解决方案。
谢谢..
答案 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
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.