忽略 .gitignore 中的行

Ignore line in .gitignore

一个项目(别人维护的)的.gitignore是这样的:

.idea/*
!.idea/watcherTasks.xml

我想添加私人观察者任务,所以我的watcherTasks.xml被改变了。但是我不想犯。

我不想每次 git add/git commit 时都键入 git reset .idea/watcherTasks.xml(或指定路径)。所以我尝试使用 .git/info/exclude 来忽略本地文件:

.idea/watcherTasks.xml

然而,.git/info/exclude 行不能覆盖 .gitignore 行(可能是因为 ! 具有更高的优先级)。

有什么我可以放入 .git/info/exclude 来取消 .gitignore 中 !.idea/watcherTasks.xml 行的效果吗?我不想修改 .gitignore,因为我不维护项目。

这个问题不需要像git commit $path这样的方法,因为我不想更改将来要使用的提交命令。

如果我明白你在问什么(总结:忽略忽略规则),答案是否定的。在 .gitignore 文档中:https://git-scm.com/docs/gitignore 它清楚地说明了以下内容:

一个 gitignore 文件指定了 Git 应该忽略的有意未跟踪的文件。 Git 已经跟踪的文件不受影响;

现在,正如您所注意到的,您不想影响整个存储库。所以,我认为你在这方面运气不好。对不起。

如果您的 .idea/watcherTasks.xml 已被跟踪,您可以:

  • 本地修改
  • 确保它保持 而不是 added/committed 和

    cd /root/folder/of/your/local/repository
    git update-index --skip-worktree -- .idea/watcherTasks.xml
    

这意味着:

  • 无需覆盖忽略规则
  • 无需修改.gitignore

您跟踪的文件保持跟踪状态,但 none 的本地修改将被添加或提交。