一位新开发人员对一个大型 git 存储库感到疯狂,真的把它搞砸了并推送了。 他所有的改变都可以被扔掉。
我的问题:我们的 git 托管程序不允许 push --force,所以我必须先 pull 。
如果我这样做,我就会有很多 merge 和冲突,并且解决它们是没有意义的。 恢复其他人所做的所有更改以便我可以推送当前版本的最佳方法是什么?
最佳答案
我找到了一种方法来完成我需要的事情。
我在这里为其他处于相同情况的人发布我的解决方案。 很可能有一种更简单的方法,因此如果您知道,请随时发布。
首先,提交所有更改,以便您拥有一个干净的工作目录。检查 git status 是否有任何更改。
然后,创建一个新的临时分支来存储您的更改。
git branch tmp
现在你应该发现你和远程分支的最后一次提交出现了分歧。 您将需要提交哈希,例如 63da978a9a4620790b75dfbae86d658a65dc3e25。
找到它后,将主分支重置为该提交。
git reset --hard COMMIT
现在从 Remote 中提取更改。不应发生任何冲突。
git pull origin master
现在您可以恢复应丢弃的提交。
git revert COMMIT1
如果您已正确完成所有操作,则只需最后一步即可完成该过程:将所有更改 merge 回您的 tmp 分支。
git merge tmp
同样,不应发生任何冲突。
您现在拥有一个可以再次推送的最新分支。万岁!
git push origin master
关于Git 分歧分支 - 恢复更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10534518/