我正在尝试合并代码,但是出现了很多冲突。由于这些都是生成的文件,所以我的想法是“忽略所有的合并冲突,并从自己的仓库中检查所有内容”。
我已经尝试过
git checkout . --ours
git add -A
git com -a
尽管“未合并路径”桶中仍有文件,但它给我报错了。我该怎么处理?
谢谢!
Git命令非常小心地隐藏冲突 - 你必须显式地检查一个有冲突的文件,让它知道它已经被修复了。看起来很奇怪,git add
没有像 -f
这样的选项来告诉它你确实是这个意思,但是这里有一个别名可以帮助你:
add-unmerged = \
"!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; git add `f`"
额外提示:如果你将 "git add" 更改为 $EDITOR,你现在就有了 edit-unmerged
,可以编辑所有有冲突的文件!
.gitattributes
。* merge=keepMine
你可以指定更精确的模式来隔离与自定义合并相关的确切文件。
使用配置:
[merge "keepMine"]
name = always keep mine during merge
driver = keepMine.sh %O %A %B
没有原生的git支持,但你可以尝试以下hack:
git status | grep "both modified:" | awk '{print $NF}' | xargs git add
对于这种情况,使用正则表达式可以帮助进行分段。
解决冲突后,要添加未合并路径中的文件,可以使用文件的公共标识符。
例如,如果需要提交几个文本文件和 XML 文件,文件的扩展名为 .txt 和 .xml,请使用以下命令将文件分段。
git add *.txt *.xml
git merge -Xours
选项,它通过使用“我们”的版本来解决冲突。(“ours”选项被传递到递归合并策略中。) - Cascabel