在 Git 合并分支时,对于不可编辑的二进制文件(如图片、PDF、编译后的资源等),可以通过以下方式明确选择保留 LOCAL(当前分支)或 REMOTE(目标分支)的版本:
方法 1:使用 git checkout
直接选择版本
# 保留 LOCAL 版本(当前分支的文件)
git checkout --ours <file_path>
# 保留 REMOTE 版本(合并进来的分支的文件)
git checkout --theirs <file_path>
- 适用场景:合并冲突时,手动指定保留哪个版本。
- 注意:需在
git merge
后出现冲突时执行。
方法 2:通过合并策略配置
Git 允许为特定文件类型配置合并策略,例如强制始终选择某一方的版本:
# 创建或修改 .gitattributes 文件
echo "<file_pattern> merge=binary" >> .gitattributes
# 或者明确禁用合并,手动处理冲突
echo "<file_pattern> -merge" >> .gitattributes
- 说明:
merge=binary
:将文件视为二进制,避免自动合并(需后续手动处理)。-merge
:完全禁止自动合并,冲突时需手动解决。
方法3:使用 git merge-file
若已处于冲突状态,可以单独对文件执行合并并指定策略:
git merge-file -p --ours|--theirs LOCAL BASE REMOTE > <file_path>
关键注意事项:
二进制文件警告:
Git无法自动合并二进制文件的差异,默认会标记为冲突。建议始终通过上述方法明确选择版本。提前备份:
操作前建议备份文件,避免意外覆盖。验证结果:
执行后运行git status
确认冲突已解决,并通过git add <file_path>
标记为已解决。
如果需要更自动化处理,可以在脚本中结合这些命令实现批量操作。
内容由零声教学AI助手提供,问题来源于学员提问