Git 说自动 merge 失败但是当我检查文件或运行 mergetool 时没有冲突他们被正确解决

标签 git version-control merge versioning

如描述中所述。我什至不希望在自动解决 merge 冲突时提示解决 merge 冲突。

我的场景是,我在一个分支上的文本文件中添加一行包含固定文本字符串的行,在同一分支上做一些其他提交,然后在另一个分支上挑选添加固定文本的更改,然后执行与其他分支 merge 。

我这样做是为了测试,因为在我的日常工作中我经常遇到冲突,但是当我使用我的 merge 工具时它说没有冲突所以我只是关闭它并手动提交。

问题是我被提示执行额外的步骤,而实际上 git 已经正确地 merge 了更改。 (我什至手动检查了文件,以确保不是我的 merge 工具在解决问题,实际上冲突已经在文件中解决了)。

我尝试对 git merge 使用“--commit”参数,但没有效果。

git 似乎无法根据消息自动 merge 更改,但实际上它实际上正确地 merge 了文件。

有没有一种方法可以自动 merge 这些类型的冲突并继续进行而无需人工干预?

我使用的是 git 版本 1.7.10.msysgit.1

最佳答案

这可能无法回答您的问题,但如果您知道要 merge 的内容,则可以根据要 merge 的内容,通过给它一个策略(和选项)。非快进 merge 通常由递归策略完成,这很好,但你也可以给它一个选项。

如果你 merge 使用

$ git merge branchB --strategy=recursive -Xours

然后,您通常会遇到的所有冲突都会自动通过您的台词解决。这可能适用于你的情况,当你知道你不应该发生冲突,但无论如何都会发生冲突。就像我说的,这会自动解决与您的版本的冲突,因此只有在您事先知道您的版本是需要的时候才使用它。

ignore-all-space 是一个更安全的选项,它可以自动修复与空格相关的任何冲突。所以:

$ git merge branchB --strategy=recursive -Xignore-all-space

我推荐这个,因为它很安全,它可能对你的情况有帮助,而且它可以避免很多待 merge 文件将整个内容拆分为本地和远程的情况,这样可以解决冲突很难。

关于Git 说自动 merge 失败但是当我检查文件或运行 mergetool 时没有冲突他们被正确解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11191984/

相关文章:

visual-studio - Visual Studio&源代码控制: How to have shared code?

r - 通过优先考虑其中一列来合并数据框中的 2 列

mysql - 将两个 SQL 数据库与多个表组合起来;在此过程中删除重复项

git - Openshift Origin 安全 git 克隆错误

git - github 分支与我推送的差异

Android、Azure Devops 在运行管道时出错 ##[error]Error : The process '/Users/runner/work/1/s/gradlew' failed with exit code 1

git - "unpack failed: error Missing commit"但存在提交

javascript - 仅从顶点创建面?

git - 什么是内容级 merge ?

git - 删除远程分支?