如何从另一分支更新Git分支且不修改目标分支的独有文件
Git分支同步操作方案
方法1:使用merge操作(适合保留合并提交记录的场景)
- 第一步:切换到
docs分支git checkout docs - 第二步:执行带合并策略的merge命令,遇到冲突时优先保留
docs分支的文件版本git merge -X ours master-X ours参数仅会在文件出现冲突时使用当前docs分支的内容,不会影响master分支新增、无冲突变更的同步,完全不会改动你在docs分支的独有文件。 - 如果仅需要忽略指定的几个独有文件,不想所有冲突都优先用
docs版本,可以按以下步骤操作:- 先执行普通merge操作:
git merge master - 出现冲突后,对需要保留的
docs独有文件单独恢复版本:git checkout --ours 独有文件的相对路径 - 所有冲突处理完成后,执行提交即可:
git commit
- 先执行普通merge操作:
方法2:使用rebase操作(适合保持docs分支提交线干净的场景)
- 第一步:切换到
docs分支git checkout docs - 第二步:执行rebase操作,同步
master分支最新提交git rebase -X ours master - 若过程中需要单独处理指定文件,冲突时执行
git checkout --ours 独有文件的相对路径,再执行git rebase --continue直到rebase流程完成即可。
可选:永久配置自动忽略独有文件冲突
如果后续需要频繁同步master分支更新到docs,可以配置规则让Git自动保留docs分支的独有文件版本,无需每次手动处理:
- 在仓库根目录创建
.gitattributes文件,添加如下内容(替换成你实际的独有文件路径):docs专属文件1.md merge=ours 专属目录/* merge=ours - 开启本地配置:
git config merge.ours.driver true
配置完成后后续所有merge操作都会自动保留docs分支的指定文件版本。
注意:以上所有操作仅会修改docs分支内容,不会对master分支产生任何影响,也不会将docs的独有文件合入master分支
内容的提问来源于stack exchange,提问作者Isidrogv
相关产品推荐
相关产品推荐

