如何在vimdiff中仅合并远程变更并批量处理冲突?
一步解决冲突:直接用上游版本覆盖本地修改
嘿,这种满屏冲突块要手动处理的场景真的超烦!别在vimdiff里耗时间了,Git有现成的命令能让你直接丢弃该文件的本地修改,完全用上游的最新版本,一步搞定:
步骤1:确保已关联上游仓库(如果还没做)
先确认你已经把原仓库设为上游远程:
git remote -v
如果没看到upstream的条目,先添加:
git remote add upstream https://github.com/原仓库作者/原仓库名.git
步骤2:拉取上游最新代码
git fetch upstream
步骤3:合并上游分支到本地
假设你要合并的是上游的main分支到你本地的main分支:
git merge upstream/main
这时候Git会提示目标文件存在冲突。
步骤4:直接用上游版本覆盖本地冲突文件
不用打开vimdiff逐个处理冲突块,直接执行这条命令,把上游分支里的目标文件完全替换掉你本地的版本:
git checkout upstream/main -- 你的冲突文件名
比如冲突文件是src/utils.js,就写:
git checkout upstream/main -- src/utils.js
步骤5:完成合并提交
现在冲突已经解决,把文件加入暂存区然后提交:
git add 你的冲突文件名 git commit
如果合并时Git已经自动生成了提交信息,直接保存提交即可。
额外小技巧:合并前直接指定采用上游版本
如果你提前就确定要完全用上游版本,也可以在合并的时候直接用策略选项,跳过冲突提示:
git merge -X theirs upstream/main
-X theirs表示当遇到冲突时,默认采用对方(上游)的修改。不过这个选项是针对冲突块的,如果文件里有部分没冲突的本地修改也会保留;要是你想整个文件都丢弃本地修改,还是用git checkout的方法更彻底。
内容的提问来源于stack exchange,提问作者devsaw
相关产品推荐
相关产品推荐

