Whitelisting and subdirectories in Git
我已经为文本文件创建了白名单。
现在,我在子目录-sub/dir/file.txt中有一个未跟踪的文本文件,并且未显示(被忽略)。 但是,显示了根目录中的文本文件。
为什么会这样,我该如何解决?
-
相关:stackoverflow.com/q/987142/78845
-
您要包含在子目录中的文件吗?如果是这样,.gitignore中的第一个星号可能已经忽略了此子目录。
-
是。在我的示例中,这些文件的目录结构将与11.1.102.55文件夹一样低。文件夹/产品之间的嵌套并不总是相同的。
-
如果您还可以,.gitignore也可以位于子目录中,并过滤该子目录中的所有内容。
-
我知道这个功能。我们有数百个目录。只显式地忽略我们不想要的文件类型比对每个目录进行一个gitignore更快。我真的在寻找一种从.gitignore文件中获取白名单功能的方法。
-
基本上,这是另一个问题的重复,但是这个问题有正确的答案...
-
我看不出这是重复的。另一个问题询问如何将某些文件列入白名单,而这个问题询问如何将某些文件类型(包括子文件夹)列入白名单。实际上,它更像是stackoverflow.com/questions/8024924/的副本。
-
@ davidkennedy85我编辑了问题以突出显示差异,并且Ive将其标记为重新打开。
-
首先,关于此主题的重复答案的祖父-您应该查看的答案很可能是-让.gitignore忽略除少数文件以外的所有内容-非常正常的活动和几个好的答案。我是这个答案的忠实支持者,似乎很清楚也很彻底。
如果以这种方式尝试,它将失败,因为您最终会将结构中的目录列入黑名单。
要解决此问题,您希望将所有不是目录的内容也不是要提交的文件类型之一列入黑名单,同时又不将目录列入黑名单。
.gitignore文件将执行此操作:
1 2 3 4 5 6 7 8
| # First, ignore everything
*
# Now, whitelist anything that's a directory
!*/
# And all the file types you're interested in.
!*.one
!*.two
!*.etc |
使用位于资源库根目录中的.gitignore在*.one,*.two和*.three文件存在的情况下,针对.txt文件在三级结构白名单中对此进行了测试-适用于我。 您无需将.gitignore文件添加到结构中的所有目录中。
我用来弄清楚答案的信息尤其来自于此(stackoverflow.com)。
-
您是否忘记了实际上要列入白名单的!前缀?
-
您还需要输入!.gitignore,使用*时对吗?
-
在这里查看我的答案:stackoverflow.com/questions/987142/使用*仅将顶级文件夹列入黑名单,而不是对所有文件夹进行递归,这可能更有用,这实际上意味着.gitignore不应将其列入白名单文件夹 子文件夹。