[英]Git: Ignore untracked files in submodule
在我的git repo中,我已经导入了一些其他项目作为子模块。 到现在为止还挺好。 但是,导入项目的维护者对他们的.gitignore
文件有点草率。 因此,在构建导入的项目之后, git status
(在子模块中)列出了大量未跟踪的文件。 因此,我自己的项目中的git status
说:
modified: <submodule> (untracked content)
我的问题是:有没有办法告诉git
忽略这些未跟踪的文件而不修复上游的.gitignore
文件?
我完全清楚可能的答案是“不”,我已经看到这个问题告诉我,无法忽略对跟踪文件的更改。 这对我来说是完全合理的,与文件是否在子模块中的问题无关。 但是,我只关心忽略未跟踪的文件,所以我认为我的问题有一个很好的解决方案。
更新 - 在评论中出现了问题:父代表可以自动分发这些忽略规则。 如果你使用我建议的原始方法,据我所知,答案是“不”。 但是,在某些情况下有一种方法可以做到这一点(来自РоманЯковский的答案)......
最灵活的方法是在子模块的gitdir
/ info / exclude文件中添加忽略规则。
cd path/to/parent/repo/.git/modules/module-name/info
vi exclude
添加模式,因为它将出现在子模块repo的.gitignore
文件中。
您可以确认子模块的gitdir
所在的位置
cat path/to/parent/repo/submoduledir/.git
这使您可以准确指定应忽略的内容; 但这种方法的gitdir
是gitdir
/ info / exlcude不会通过推送或提取传播,因此必须单独配置每个repo。
如果您不需要对被忽略的文件如此具有选择性 - 例如,如果您可以说“应忽略子模块中的任何工作树更改” - 那么您可以在模块定义中指定忽略规则(.gitmodules ),这当然是承诺工作的一部分。 gitmodules文档中解释了可能的忽略规则: https ://git-scm.com/docs/gitmodules
在.gitmodules
将ignore = all
添加到子模块。
有更多的ignore
选项,你可以在git help config
,search submodule.<name>.ignore
读取它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.