Git 分歧分支 - 恢复更改

标签 git merge conflict

一位新开发人员对一个大型 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/

相关文章:

Git LFS 递归跟踪文件夹

git - 重新签署以前的提交而不更改提交哈希并保留标签

svn - 具有多个开发人员的 Matlab Simulink 版本控制

python - 如何处理基于 git 的 wiki 中的 merge/冲突?

jquery - 如何在 html 中使用冲突?多版本jquery

git - 如何管理多个用户在 git 上的代码 merge ?

bash - 如何在不复制存储库的情况下自动从github下载文件

r - 在 R 中合并两个数据帧时进行聚合

git - 是否可以使现有的 git 提交显示为 merge ?

Git:获取特定分支上两次提交之间的提交