git项目可以跟踪我的全局gitignore中列出的目录吗?

时间:2016-03-09 22:01:30

标签: git gitignore

我正在开发一个需要跟踪它的node_modules目录的项目。我真的不想删除我对该目录的全局gitignore引用,因为所有其他项目都要跟踪node_modules目录。

有没有办法强制git在项目级别跟踪某些内容?或者我是否需要通过所有项目验证每个项目是否有自己的忽略然后从全局gitignore中删除引用?

2 个答案:

答案 0 :(得分:3)

如果跟踪文件,则忽略它在忽略文件中的存在(如果我可以这样说:-))。

我总是说.gitignore是该文件的错误名称,因为它并不是一个要忽略的文件列表"。相反,它有两个目的。 Git在两种情况下检查ignore-file条目:

  • 当它抱怨那里有一个未跟踪的文件时,或者
  • 当它要破坏文件时,它不确定是否允许这样做。

第一种情况最常见于git status:向您的忽略文件添加文件或模式告诉git"请关闭*.o等等,他们&#39 ;不应该被跟踪,所以不要抱怨他们没有被跟踪。"在这种情况下,条目可能应该在名为.git-shut-up-about-these-files的文件中。

第二种情况更加阴险。假设您在git存储库中有一个包含文件a1a2的提交,那是您的当前提交(因为它&# 39; s分支的尖端,或者因为你做了git checkout <commit>,或者其他什么,并且这两个文件都在那个提交中:为了论证,让我们说这是{{1的提示}})。我们还要说,另一个提交master,只有文件1234567,没有a1。如果你现在这样做:

a2

git必须删除文件git checkout 1234567 。没关系,因为它在你的其他提交中(a2的提示),master就在那里。如果你换回:

a2

git重新创建git checkout master

但是,如果在a2的提示中,master中有一个名为important的文件 ,那该怎么办?你1234567然后停下来做一些重要的笔记:

git checkout 1234567

您写出这些重要说明并退出编辑器,然后决定$EDITOR important 。 Git现在需要破坏你刚才写的笔记,因为git checkout master的提示包含一个名为master的文件。

在这种情况下,git会做的是检查您的忽略文件名称important。如果那里有,那么git可以随意清除该文件并将其替换为提交中的文件。如果,则important会警告检出会覆盖git checkout,并要求您先将其取出。

这些文件名条目可能位于名为important的文件中。

请注意,没有条目可以标记文件&#34;不存储在存储库中,但很珍贵:不要破坏&#34;。

答案 1 :(得分:1)

是的,您可以向本地.gitignore添加否定,以便git仅为此项目跟踪它。

!node_modules