Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.gitignore忽略文件,即使没有规则指定它_Git_Gitignore - Fatal编程技术网

.gitignore忽略文件,即使没有规则指定它

.gitignore忽略文件,即使没有规则指定它,git,gitignore,Git,Gitignore,这是我的.gitignore文件: smarty/templates_c config.codekit components/**/styles/ components/**/js/ !components/root/js-dev/plugin/select2-4.0.3/dist/js/ !components/root/js-dev/plugin/chartjs/ .sass-cache/ /node_modules/ /dbv-parkrooau/ /pma-parkrooau/ coun

这是我的
.gitignore
文件:

smarty/templates_c
config.codekit
components/**/styles/
components/**/js/
!components/root/js-dev/plugin/select2-4.0.3/dist/js/
!components/root/js-dev/plugin/chartjs/
.sass-cache/
/node_modules/
/dbv-parkrooau/
/pma-parkrooau/
count.php
因此,如果我在
components/foo/js dev/main.js
中进行更改,那么
.gitignore
将跟踪其更改,并将其包含在我的存储库中;这很好

但是,我有一个文件位于
components/theygo/js dev/shoppingcart.js
-
.gitignore
不跟踪此文件的更改,原因我无法理解
components/theygo/js-dev/main.js
工作正常,
components/root/js-dev/main.js
,以及我迄今为止创建的所有其他JavaScript文件,只有这一个文件,我不确定为什么

如果我从我的
.gitignore
中删除
components/**/js/
,它会跟踪文件,但也会跟踪
js
子目录中
components
内任何目录中的所有文件

如果我在这一行加上:

!components/theygo/js-dev/shoppingcart.js
它正确地跟踪文件


有人能解释为什么会发生这种情况,以及我能做些什么来最好地解决这个问题,而不是添加一个脏的包含语句吗?

您的子目录中有.gitignore吗?

基于你的.gitignore,我也尝试了确切的文件夹结构,这个文件将被正确跟踪

第一次提交并推送你所有的当前更改。 然后,您必须删除所有跟踪的文件并将其添加回 使用以下命令

git rm -r --cached .
git add .
git commit -m ".gitignore is now working"

在~/.gitu global中有什么吗?另外,您可能希望运行“git check ignore-v components/theygo/js dev/shoppingcart.js”,它应该告诉您是哪个规则导致忽略。@ptyx我尝试运行该命令,但没有返回任何结果。如果
components/theygo/js dev/shoppingcart.js
components/theygo/js dev/main.js
不受规则
components/**/js/
的影响,则以同样的方式。不知何故,我怀疑它们不在同一路径上。暗中拍摄:在不区分大小写的文件系统中,同一目录中是否有另一个大小写相同的文件?选中ignore empty表示文件未被忽略,因此我们至少在行为上存在不一致性(我假设通过“.gitignore不跟踪此文件的更改”您的意思是git状态不会显示它,除非您显式地“git添加”它?@ptyx否,不幸的是,
js-dev
目录中只有
shoppingcart.js
page2.js
viewproduct.js
。。。另外两个都可以正常工作……不,不,
.gitignore
在任何子目录中,其方式将影响
shoppingcart.js
,即
组件中没有任何内容,
它们也没有
js dev