我正在开发一个需要跟踪它的node_modules
目录的项目。我真的不想删除我对该目录的全局gitignore引用,因为所有其他项目不都要跟踪node_modules
目录。
有没有办法强制git在项目级别跟踪某些内容?或者我是否需要通过所有项目验证每个项目是否有自己的忽略然后从全局gitignore中删除引用?
答案 0 :(得分:3)
如果跟踪文件,则忽略它在忽略文件中的存在(如果我可以这样说:-))。
我总是说.gitignore
是该文件的错误名称,因为它并不是一个要忽略的文件列表"。相反,它有两个目的。 Git在两种情况下检查ignore-file条目:
第一种情况最常见于git status
:向您的忽略文件添加文件或模式告诉git"请关闭*.o
等等,他们&#39 ;不应该被跟踪,所以不要抱怨他们没有被跟踪。"在这种情况下,条目可能应该在名为.git-shut-up-about-these-files
的文件中。
第二种情况更加阴险。假设您在git存储库中有一个包含文件a1
和a2
的提交,那是您的当前提交(因为它&# 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