如何在Git合并时自动忽略CSV冲突,默认保留源分支CSV文件
合并分支时忽略CSV文件冲突,保留当前分支版本的解决方案
嘿,我明白你的需求了——合并branchb到brancha时,让所有CSV文件自动沿用brancha的版本,不用手动处理这些烦人的冲突,只专注解决代码文件的冲突对吧?这有两种靠谱的方法,看你是要临时生效还是长期配置:
方法一:临时处理(仅本次合并生效)
如果你只是这次合并需要这么做,不想改仓库的全局配置,按下面步骤来:
确认你当前在brancha分支(你已经说了在这,还是确认下更稳妥):
git checkout brancha执行合并命令,触发冲突:
git merge branchb现在Git会提示有冲突,先处理所有CSV文件:
# 把所有冲突的CSV文件恢复为brancha的版本 git checkout --ours -- *.csv # 如果CSV在子目录,用**/*.csv匹配所有层级的CSV文件 # git checkout --ours -- **/*.csv标记这些CSV文件为冲突已解决:
git add *.csv # 对应子目录的话就是 git add **/*.csv接下来处理剩下的代码冲突:打开提示冲突的代码文件,手动修改冲突内容,解决后执行:
git add <冲突的代码文件名>最后完成合并提交:
git commit
方法二:长期配置(以后合并都自动处理CSV冲突)
如果之后还会遇到类似场景,建议给CSV文件设置默认的合并策略,一劳永逸:
在仓库根目录创建或编辑
.gitattributes文件,添加一行规则:*.csv merge=ours这行规则告诉Git:只要CSV文件出现合并冲突,就自动采用当前分支(也就是你执行合并时所在的分支)的版本。
提交这个配置文件(可选,如果你想长期保留的话):
git add .gitattributes git commit -m "Set merge strategy for CSV files to ours"现在执行合并:
git merge branchbGit会自动处理所有CSV的冲突,直接用brancha的版本,你只需要专注解决代码文件的冲突即可,后续步骤和方法一的5、6一致。
小提示
git checkout --ours -- *.csv中的--很重要,它能避免文件名和Git命令参数混淆,确保*.csv被当作路径处理。- 如果之后不需要这个长期配置了,直接删掉
.gitattributes里的那行规则,提交修改就行。
内容的提问来源于stack exchange,提问作者itthrill
相关产品推荐
相关产品推荐

