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

Git单分支忽略文件的正确流程及git checkout --ours失效排查

问题解答

1. 实现单分支忽略文件夹的正确Git工作流

有两种可靠方案,可根据需求选择:

方式一:使用本地忽略文件(推荐,无版本控制冲突)

Git提供了本地专属的忽略配置文件.git/info/exclude,该文件不会被提交到远程仓库,仅作用于当前本地仓库。操作步骤:

  • 切换到development分支,打开仓库根目录下的.git/info/exclude文件(无则创建)
  • 添加一行jsonFolder/,保存后即可在当前分支忽略该文件夹,且完全不影响其他分支
  • 无需执行git rm --cached或修改.gitignore,远程仓库的development分支不会留下任何忽略该文件夹的变更,合并到main时也不会触发删除操作

方式二:维护分支专属的.gitignore(适合需要同步分支忽略规则的场景)

如果需要让其他开发人员的development分支也忽略该文件夹,可通过版本控制的.gitignore实现,但需处理合并冲突:

  1. 在development分支:
    • 执行git rm --cached jsonFolder(仅移除Git追踪,保留本地文件)
    • 修改.gitignore,添加jsonFolder/
    • 提交变更:git commit -m "Ignore jsonFolder in development"
  2. 合并到main分支时:
    • 执行git merge development,若.gitignore出现冲突,用git checkout --ours .gitignore选择main分支的.gitignore版本
    • 若合并时Git自动应用了development的.gitignore,直接执行git checkout main -- .gitignore恢复main的忽略规则
    • 恢复被删除的文件夹:git restore --source=HEAD~1 jsonFolder(从合并前的HEAD版本恢复)
    • 最后提交恢复状态:git commit -m "Restore jsonFolder in main"

2. 为什么git checkout --ours .gitignore没有生效?

这个命令仅在合并冲突阶段有效——只有当合并时.gitignore文件被标记为冲突状态(两个分支对.gitignore的修改无法自动合并),执行它才会选择当前分支(main)的版本。

你遇到的情况应该是:合并时Git自动将development分支的.gitignore变更(添加jsonFolder/)合并到了main的.gitignore里,未触发冲突。此时.gitignore已是修改后的状态,git checkout --ours .gitignore会检测到当前工作区和索引的.gitignore与main分支的目标版本一致,因此提示Updated 0 paths from the index。

这种情况下,正确的恢复命令是直接从main分支拉取原版本:git checkout main -- .gitignore

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:57:23