如何将一个非常陈旧的分支与主分支保持同步?

3

我们的一个分支已经10个月没有操作了,我们希望将其与主干同步,但出现了太多的合并冲突。我应该如何让它成为当前版本的一个派生版本并且丢弃所有冲突呢?


如果你所说的“放弃所有冲突”是指删除分支的更改并将其指向主分支中最新的提交,那么你只需要重置到最近的提交(在检出旧分支后):git reset --hard branch_name - Robert Rouhani
3个回答

1

如果您不介意放弃分支foo上的任何更改,只需执行以下操作:

git fetch origin
git checkout foo
git reset --hard origin/foo

谢谢!除此之外,我还不得不进行强制推送才能让Github接受它。 :) - Kit Sunde

0

如果已经过去了10个月,我认为如果您现在已经在不同的开发者存储库之间进行了许多推送和拉取操作,那么重新定位可能是不可能的。

听起来,如果有太多的基本代码差异,那么某人只需要吸收并手动执行合并工作,至少GIT应该指出这里需要完成的所有工作。

如果失败,您总可以将旧分支中所需的功能重写到最新的代码库中,我想?尽管很烦人,但通常重新创建已经创建过的东西非常快速。


-1

听起来你是想让所有的合并冲突都消失,这样你就可以提交合并的结果了。如果是这样的话,只需对所有显示为“需要合并/冲突”的文件执行“git rm”操作。之后,你可以提交“旧分支”。然后,从新代码库中复制每个被你删除的文件(使用“git rm”命令),添加它们,并再次提交。现在你拥有了1)所有的新代码,2)大部分旧代码和3)继续努力使其正常工作。


这是错误的建议。它只是将解决API更改和冲突的工作推迟到以后,除了现在你不再有git告诉你什么是冲突的。 - Daenyth
1
给我个机会吧。这不是我的工作流程,而且我在评论前加了“听起来像”。那个人可能是一个Git新手,他知道冲突并不重要,但不知道如何解决它们。我还强调了“提前工作以使其正常工作”,以强调事情不会顺利进行。重要的是,我提供了一个实际的解决方案。他说“放弃所有冲突”,难道不是吗?为什么你要批评我? - GoZoner
因为正确的答案会告诉他解决更大问题的方法,指出这种方法最终会比现在直接采用困难的方式更费力。 - Daenyth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接