Git合并master到分支时,如何忽略特定文件夹冲突并保留当前分支版本?
解决Git合并时直接采用当前分支文件夹内容的问题
为什么git checkout --ours path/to/folder会报错?
git checkout --ours/--theirs仅对标记为内容冲突的文件生效——也就是那些Git显示both modified的文件。如果文件夹的"冲突"是因为分支间存在文件新增/删除的差异,而非同一文件内容冲突,Git就会提示"X files does not have our version",因为这些文件不需要二选一,只是状态未被Git标记为冲突项。
直接保留当前分支文件夹内容的安全步骤
以下操作全程安全,不会破坏现有合并进度,操作前可先执行git status确认当前处于合并中状态:
清除暂存区中该文件夹的master分支改动
执行命令移除暂存区里来自master的文件夹相关改动,不会删除本地文件:git rm -r --cached path/to/folder将当前分支的文件夹内容重新纳入暂存区
让Git确认保留当前分支该文件夹的所有文件状态:git add path/to/folder验证并完成合并
执行git status确认该文件夹的冲突提示已消失,随后提交合并结果:git commit
一步到位的简化命令
如果想跳过分步操作,直接用当前分支内容覆盖目标文件夹(自动处理所有类型的差异),执行:
git checkout HEAD -- path/to/folder
HEAD指向你当前的分支,这条命令会将当前分支该文件夹的所有内容同步到工作区和暂存区。完成后同样用git status验证,没问题即可提交合并。
额外提示
- 用
git diff --name-only --diff-filter=U可以查看所有真正处于内容冲突的文件,确保你已处理完这些文件的冲突。 - 操作全程不要中断合并流程,所有命令都在合并进行中执行。
内容的提问来源于stack exchange,提问作者Full Time Skeleton
相关产品推荐
相关产品推荐

