naw*_*fal 81 git directory version-control gitignore subdirectory
我已经看到了类似的问题(1,2和3),但我不从他们那里得到一个妥善的解决办法.
除了特定的文件类型,我需要忽略特定文件夹下的所有文件.该文件夹是根路径的子目录.让我命名文件夹Resources.由于我不想让事情复杂化,让我忽略所有文件夹下的文件Resources.
这是最常见的解决方案(在所有重复的问题中)
# Ignore everything
*
# Don't ignore directories, so we can recurse into them
!*/
# Don't ignore .gitignore
!.gitignore
# Now exclude our type
!*.foo
Run Code Online (Sandbox Code Playgroud)
此解决方案的问题是它停止跟踪新添加的文件(因为*忽略所有文件).我不想继续排除每种文件类型.我想要正常的行为,如果添加任何新文件,git status显示它.
我终于在这里找到了解决方案.解决方案是.gitignore在Resources文件夹中添加另一个文件.这工作正常.
我可以用一个忽略文件实现相同的目标吗?我发现在不同的目录中有很多忽略文件有点笨拙.
这就是我想要实现的目标:
# Ignore everything under Resources folder, not elsewhere
Resources
# Don't ignore directories, so we can recurse into them
!*Resources/
# Now exclude our type
!*.foo
Run Code Online (Sandbox Code Playgroud)
但这给出了相反的输出.它会忽略*.foo类型并跟踪其他文件.
Ben*_*tin 24
最好的答案是在Resources下添加一个Resources/.gitignore文件,其中包含:
# Ignore any file in this directory except for this file and *.foo files
*
!/.gitignore
!*.foo
Run Code Online (Sandbox Code Playgroud)
如果您不愿意或无法添加.gitignore文件,那么有一个不优雅的解决方案:
# Ignore any file but *.foo under Resources. Update this if we add deeper directories
Resources/*
!Resources/*/
!Resources/*.foo
Resources/*/*
!Resources/*/*/
!Resources/*/*.foo
Resources/*/*/*
!Resources/*/*/*/
!Resources/*/*/*.foo
Resources/*/*/*/*
!Resources/*/*/*/*/
!Resources/*/*/*/*.foo
Run Code Online (Sandbox Code Playgroud)
如果添加的目录比指定的更深,则需要编辑该模式.
这看起来可能很愚蠢,但是请检查您之前是否尚未将要忽略的文件夹/文件添加到索引中。如果您这样做了,则将.gitignore文件中的内容放在哪里都无所谓,这些文件夹/文件仍将被暂存。
要么我做错了,要么接受的答案不再适用于当前的 git。
其实我已经找到妥善的解决办法,并张贴在几乎同样的问题在这里。有关更多详细信息,请前往那里。
解决方案:
# Ignore everything inside Resources/ directory
/Resources/**
# Except for subdirectories(won't be committed anyway if there is no committed file inside)
!/Resources/**/
# And except for *.foo files
!*.foo
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
101508 次 |
| 最近记录: |