Git在合并时覆盖文件 - 不显示冲突

10

可能重复:
Git-如何强制合并冲突和手动合并选定文件

我们正在尝试在两个分支之间进行合并:稳定代码和新功能。

合并功能对我们来说不起作用:它有时会显示冲突,但通常只是覆盖文件而没有告诉我们任何冲突,可能是使用了它认为正确的版本。

是否可以阻止此覆盖,以便它向我们显示所有冲突的行?我们尝试使用git diff来了解它的范围,但由于我们在稳定分支上进行了相当广泛的调试,所以有几千行...因此,如果可能的话,我们真的需要让合并功能正常工作。

因此,我们处于有点混乱的境地,非常感谢所有的帮助。

2个回答

2
你可以这样运行合并操作:
git merge --no-commit --no-ff your-branch

这不会创建合并提交或快进主分支,而只是将合并的文件放入您的工作目录中。您可以检查更改。一旦您满意了,可以使用git commit提交或通过git reset --hard还原。

感谢ShadyKiller和ap.提供的解决方案。他们为我们提供了解决问题的线索,但似乎即使使用此合并方法,仍然会忽略其中一些代码而不出现更改。我们正在努力找出原因。如果我们有进一步的进展,我们将在这里回复。再次感谢。 - Eric Hiland
你好 @EricHiland,我们也遇到了同样的问题。你有任何更新吗? - sktguha

2

由于不知道如何重现你的问题,我需要猜测一些。

根据我的经验,关于git合并的困惑通常可以通过在合并之前运行git pull --rebase来减少。这会拉取远程最新的更改,并将你的更改与它们合并。但是,如果你打算在早期提交的基础上合并你的更改,则不要这样做。无论如何,在运行pull之前,请记下最新的提交ID,以便如果出现问题时可以回滚到它。

现在来谈合并本身,你可以尝试使用git merge --no-ff --no-commit来防止合并被提交。我不知道这是否会给你想看到的完整冲突报告,但它允许你检查合并结果(就像模拟模式)。如果你不喜欢结果,可以使用git reset --hard恢复合并。


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