Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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_Subdirectory - Fatal编程技术网

忽略gitignore子目录中的文件

忽略gitignore子目录中的文件,git,gitignore,subdirectory,Git,Gitignore,Subdirectory,这是我的“根”的内容 # exclude everything ... * # ...except !/.gitignore !*/ !/modules/wp-azth/** 问题是,在modules文件夹下,我有很多第三方模块,里面有一个.gitignore文件 使用上述规则,所有第三方模块文件夹都会被忽略,但它们的.gitignore文件不会被忽略(当然我不需要它) 有没有办法忽略被忽略子文件夹中的.gitignore文件?也许.git/config可以用于此目的 (我认为git的不良行为

这是我的“根”的内容

# exclude everything ...
*
# ...except
!/.gitignore
!*/
!/modules/wp-azth/**
问题是,在modules文件夹下,我有很多第三方模块,里面有一个.gitignore文件

使用上述规则,所有第三方模块文件夹都会被忽略,但它们的.gitignore文件不会被忽略(当然我不需要它)

有没有办法忽略被忽略子文件夹中的.gitignore文件?也许.git/config可以用于此目的

(我认为git的不良行为是考虑他们,即使他们被忽视)

更新:似乎缺少git,它允许被忽略的文件夹“任意”取消忽略自身!。gitignore规则位于gitignore文件中,该文件(由任何人)放置在被忽略的子目录中。 被忽略的文件夹通常可能包含动态、临时或第三方文件(缓存、临时、插件等)。。。所以git只需使用一个简单的脚本就可以创建不需要的行为!。gitignore作为子目录内的规则


*.gitignore将起作用,但git仍将跟踪其已跟踪的.gitignore文件


正在运行的两个命令之间的唯一区别是,我将
*.gitignore
(通过您在中间看到的命令)添加到我的根级别
.gitignore
文件中


可选前缀“!”否定模式;任何匹配的文件 被先前模式排除的将再次被包括


这意味着中间级别的.gitignore文件可能有!*。gitignore在其中,这可能会弄乱更高级别的声明。

问题是
.gitignore
目录中的文件:

git检查忽略-v-n/modules/TC-JSON-API/storage/app/.gitinore
返回:
/modules/TC-JSON-API/storage/app/.gitignore:2:!。gitinore/modules/TC-JSON-API/storage/app/.gitinore

然后,解决方案只是将
/modules/*
添加到我的
.gitignore

# exclude everything ...
*
# ...except
!/.gitignore
!*/
!/modules/wp-azth/**
变成

# exclude everything ...
*
modules/*
# ...except
!/.gitignore
!*/
!/modules/wp-azth/**

我不明白为什么git需要这种“规范”…没有这个规则。gitignore被忽略文件夹的文件被处理/列在提交中。但是现在它可以工作了。

那么
/**/.gitignore
呢?(我不知道它是否有效,但这是我尝试的方式)已经尝试过(放在gitignore规则的末尾),但如果在其中一个文件上运行
git check ignore-v-n
,它会说什么?你的
gitignore
路径中可能有一个覆盖。你使用的是什么版本的git?@VonC我的git版本是1.9.1我刚刚用gitbash在windows git安装上测试了它,它对我很好。在某个地方创建一个全新的.gitignore文件,并查看当您的根目录中有此文件时,git状态是否会显示它。gitignore(不适用于我)我添加了一个pic,显示它对我的工作方式,以及一个可能会给您带来问题的“gotcha”。其中一个第三方模块有一个.gitignore,其中包含一个!。gitignore规则。。。(这条规则可能只应用于整个git项目而不是它的[sub]目录吗?)显然,这是设计上的,每个子模块控制它内部跟踪的内容。所以“parent.gitignore”仅适用于非模块部分。那么,为什么不添加一个别名,通过使用foreach将“*.gitignore”添加到所有模块中呢。(您可能需要删除每个/每个gitignore)您误解了,第三方模块不是git子模块,只是包含源代码的文件夹。然而,在我的“模块”文件夹中,我必须排除除我所说的某些特定文件夹之外的所有内容。在第三方项目/文件夹中,有些.gitignore文件带有!。gitignore规则似乎会影响整个存储库。由于其他第三方文件夹的内容不受我控制,我无法更改这些gitignore文件。这是因为您排除了带有
*
的所有文件,然后包含带有
的所有目录*/。将处理包含目录中的任何
.gitignore
文件。通过明确声明排除
modules/*
,您不再包括
/modules/TC-JSON-API/storage/app/
目录,因此git不再包括
/modules/TC-JSON-API/storage/app/.gitignore