可能重复:
Git - Whitelisting files in a complex directory structure
我希望git存储库只跟踪名为eg的文件SOURCES
而其他一切都将被忽略(例如,每个SOURCES
文件列出其起源的pdf文件树)。最简单的镜头就是
*
!SOURCES
.gitignore
中的。但是排除在例如A/SOURCES
覆盖了*
,要求我使用git add -f
。如何修改.gitignore
以忽略除名为SOURCES
的文件之外的所有内容而不需要强制添加?
编辑由于目录结构未修复,因此发布here的解决方案将无法执行,即不应将包含SOURCES
文件的新目录添加到{{ 1}}手工......
答案 0 :(得分:1)
仅使用.gitignore
Git不跟踪路径。它仅跟踪对象(〜文件)。
那么,你为什么不扭转这些表格呢?
git add -f -- */*/SOURCES */SOURCES
或
shopt -s globstar
git add -f -- **/SOURCES
或者拿出大枪:
git add -f -- $(find -type f -name SOURCES)
甚至
find -type f -name SOURCES -exec git add -f -- {} \+
未经考验的想法也许这样的事情可能是在预提交挂钩中?
更新提高自动化程度的想法:
将此添加到.git / config
[alias]
ac = "!_() { git add -f -- */*/SOURCES && git commit \"$@\"; }; _"
现在,你可以说
git commit -m 'like you usually work'
,它会自动添加*/*/SOURCES