如何合并其他repo的分支并排除指定文件保留本地原有版本
Git跨仓库合并时保留指定本地文件不被覆盖的操作方法
你需要将yyy仓库的分支合并到当前xxx仓库,同时保留config.js、options.js、views/home.ejs三个文件的本地版本、忽略yyy仓库对应文件改动的需求,可通过以下两种方案实现:
方案1:单次合并快速处理(适合仅合并一次的场景)
你原本的基础操作流程不变,只需要在执行完git merge --allow-unrelated-histories yyy/master命令之后,追加以下操作:
- 用当前分支合并前的本地版本覆盖三个目标文件:
git checkout HEAD -- config.js options.js views/home.ejs
- 确认文件内容符合预期后,正常提交合并结果即可:
git add config.js options.js views/home.ejs git commit
如果合并过程中提示这三个文件有冲突,执行上述checkout命令后冲突会直接解决,不需要手动编辑冲突内容。
方案2:配置永久合并规则(适合需要多次合并yyy仓库代码的场景)
如果后续还要频繁从yyy仓库拉取代码合并,可以提前配置合并规则,以后每次合并都会自动保留这三个文件的本地版本:
- 在当前
xxx仓库的根目录新建.gitattributes文件,写入以下内容:
config.js merge=ours options.js merge=ours views/home.ejs merge=ours
- 将这个规则提交到当前分支:
git add .gitattributes git commit -m "配置合并时保留本地指定文件的规则"
- 再执行你原本的合并命令即可,Git会自动忽略
yyy仓库对这三个文件的改动,直接使用本地版本。
如果后续不需要这个规则了,删除.gitattributes文件并提交即可。
内容的提问来源于stack exchange,提问作者Aerodynamika
相关产品推荐
相关产品推荐

