git merge/pull遇本地未跟踪文件覆盖报错 如何自动获取diff合并内容
Git合并/拉取时保留本地未跟踪同名文件的自动合并方案
执行git merge或git pull时如果本地存在与上游新增文件同名的未跟踪文件,会触发以下报错:
error: The following untracked working tree files would be overwritten by merge:
要保留本地内容同时自动合并两份文件,不需要手动逐个处理,可按以下步骤操作:
- 第一步:将本地所有未跟踪文件暂存到Git暂存栈,此时工作区冲突文件会被临时移除
git stash push --include-untracked -m "temp: save local untracked files"
- 第二步:正常执行你需要的拉取/合并操作,此时不会再触发未跟踪文件覆盖报错
# 拉取远程分支更新用这个 git pull # 合并指定本地分支用这个,替换<目标分支名>为实际分支名 git merge <目标分支名>
- 第三步:恢复之前暂存的本地文件,Git会自动按标准合并规则合并两份文件的内容,无歧义的内容会自动合并,存在冲突的内容会在文件中标记标准冲突分隔符
git stash pop
- 可选:如果需要全自动处理冲突,无需人工介入,可在恢复暂存文件触发冲突后执行以下命令
# 冲突部分优先使用上游分支内容 git checkout --ours -- . # 冲突部分优先使用本地暂存的内容 git checkout --theirs -- .
注意:
--ours对应刚拉取/合并完成的上游内容,--theirs对应你之前暂存的本地未跟踪文件内容
- 确认合并结果无误后执行提交即可
git add . && git commit -m "merge: combine local untracked files with upstream changes"
内容的提问来源于stack exchange,提问作者xeruf
相关产品推荐
相关产品推荐

