忽略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
。