You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Git两分支特定目录独立追踪且仅合并指定文件?

让Git分支间指定目录独立追踪、拉取时不合并的方案

要实现你需要的效果——src/main.c在分支拉取时正常合并,config目录下的文件各自保留对应分支的版本、不触发合并操作,可以采用以下两种可行方法:

方法1:通过.gitattributes配置全局合并策略

这是长期需求的最优解,配置后仓库所有用户都能生效:

  • 在仓库根目录创建.gitattributes文件,写入以下规则:
    config/** merge=ours
    
    该规则表示:当合并操作涉及config目录下的任意文件时,Git会始终保留当前分支的版本,完全忽略对方分支的相关变更。
  • 将.gitattributes提交并推送到所有分支:
    git add .gitattributes
    git commit -m "Configure config directory to use 'ours' merge strategy"
    git push
    
    完成后,在master和testing分支间执行拉取、合并操作时,config目录的文件会自动保留当前分支的版本,不会产生合并冲突,也不会被对方分支的文件覆盖。

方法2:用git update-index设置本地临时忽略

如果只是个人临时需求,不想修改仓库全局配置,可以使用此方法:

  • 在master分支执行命令,标记该分支的config文件为「假设未修改」:
    git update-index --assume-unchanged config/main.cfg
    
  • 在testing分支执行对应命令:
    git update-index --assume-unchanged config/test.cfg
    
    此设置仅对本地仓库生效,Git会忽略这些文件的版本差异(包括分支切换时的变更),但重新克隆仓库或切换分支后需要重新执行命令。

注意事项

  • 方法1是仓库级别的持久化配置,适合团队统一使用;
  • 方法2是本地临时设置,仅适用于个人临时场景;
  • 两种方法都不限制你手动修改config目录的文件,仅在合并、拉取操作时阻止自动合并或覆盖。

内容的提问来源于stack exchange,提问作者dronus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 00:24:52