接受Git中的所有合并冲突

8

我正在尝试合并代码,但是出现了很多冲突。由于这些都是生成的文件,所以我的想法是“忽略所有的合并冲突,并从自己的仓库中检查所有内容”。

我已经尝试过

git checkout . --ours
git add -A
git com -a

尽管“未合并路径”桶中仍有文件,但它给我报错了。我该怎么处理?

谢谢!


你确定它没有因为你在路径后面而不是前面放置选项而给出错误吗? - Cascabel
1
此外,还有git merge -Xours选项,它通过使用“我们”的版本来解决冲突。(“ours”选项被传递到递归合并策略中。) - Cascabel
哦,我明白你的意思了 - 你在提交时遇到了错误,而不是检出时。回答时间! - Cascabel
看起来很直观,Git可以接受所有已经消除<<<,>>>和===符号的文件。 - John Jiang
4个回答

11

Git命令非常小心地隐藏冲突 - 你必须显式地检查一个有冲突的文件,让它知道它已经被修复了。看起来很奇怪,git add 没有像 -f 这样的选项来告诉它你确实是这个意思,但是这里有一个别名可以帮助你:

add-unmerged = \
    "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; git add `f`"

额外提示:如果你将 "git add" 更改为 $EDITOR,你现在就有了 edit-unmerged,可以编辑所有有冲突的文件!


4

啊,说得好。我一直以为 OP 仍然想要(或必须)手动获取正确版本的文件,但既然它们是生成的文件,应该可以使用合并驱动程序来针对所有这些文件! - Cascabel

2

没有原生的git支持,但你可以尝试以下hack:

git status | grep "both modified:" | awk '{print $NF}' | xargs git add

为了安全起见,先不要使用xargs命令,而是先运行不带xargs的命令以检查要添加的文件。

0

对于这种情况,使用正则表达式可以帮助进行分段。

解决冲突后,要添加未合并路径中的文件,可以使用文件的公共标识符。

例如,如果需要提交几个文本文件和 XML 文件,文件的扩展名为 .txt 和 .xml,请使用以下命令将文件分段。

git add *.txt *.xml

注意:这将添加存储库中的所有 .txt 和 .xml 文件,即使它们是未跟踪的文件。

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