恢复公共存储库

时间:2018-03-20 15:52:58

标签: git github

最近有人对我正在开发的分支推送了一些不正确的更改,当我尝试从git repo中提取时,正确的代码被错误的代码覆盖而不会产生冲突。因此,我想将repo恢复为使用我自己的本地分支的共同祖先,然后将我的本地更改推送到repo。

我将我的本地更改移动到temp_branch,然后检出了不正确的分支,并使用temp_branch将每个提交/合并恢复回公共祖先。但是,当我尝试将我的本地更改从temp_branch合并回工作流程时,我仍然会遇到与恢复的提交/合并冲突(我想因为我的一些更改更旧了?)。注意:我可以执行git reset --hard回到这个共同的祖先并合并temp_branch而没有任何问题/冲突。

我知道我可以强制将我的本地更改推送到回购,但我正在寻找一个更安全的选项,它将保留历史记录,如果他们已经删除了错误的版本,则不需要其他问题。任何人都可以帮助我吗?

编辑:

我也试过git merge -X theirs temp_branch。这几乎给了我想要的东西,但它仍会产生一些冲突,当我git diff时,与temp_branch存在差异。

1 个答案:

答案 0 :(得分:0)

我了解到here需要考虑的一个微妙问题,特别是当其中一个"坏"更改涉及来自另一个分支的合并(就像我的那样)。

即使我通过合并/ rebase的冲突来完成有效纠正我的分支状态的完整历史记录,如果我的更改基于包含来自其他分支的合并的恢复,我已经开始自责。几个月后,当你再次尝试重新合并这些分支时,git会回顾并看到分支已经合并,并且会拒绝再次合并内容,或者更糟糕的是,还原它们所创建的分支上的原始更改。

在这种情况下,该链接提供了两个安全选项:

  1. 立即执行此反向合并,然后还原还原,以便将来不会发生。

  2. 放弃旧分支,创建一个新分支,让大家知道开发应该在新分支上继续。

  3. 也许有人有更好的方法来处理这个问题,但这些是我找到的最好的解决方案。最后,我选择了一个新的分支,因为这需要最少量的工作,并且不太可能让像我这样的新手弄乱。