Git: 忽略子模块中未跟踪的文件
Git: Ignore untracked files in submodule
在我的 git 存储库中,我导入了一些其他项目作为子模块。到目前为止,一切都很好。然而,导入项目的维护者对他们的 .gitignore
文件有点马虎。因此,在构建导入的项目后,git status
(在子模块内)列出了大量未跟踪的文件。因此,git status
在我自己的项目中说:
modified: <submodule> (untracked content)
我的问题是:有什么方法可以告诉 git
忽略这些未跟踪的文件而不修复上游 .gitignore
文件?
我完全知道可能的答案是 "no",而且我看到 告诉我不可能忽略对跟踪文件的更改。这对我来说完全有意义,独立于文件是否在子模块中的问题。但是,我只关心忽略 未跟踪的 文件,所以我认为我的问题有一个很好的解决方案的可能性很小。
UPDATE - 在评论中提出了问题:父回购能否自动分发这些忽略规则。如果您使用我建议的原始方法,据我所知,答案是 "no"。然而,在某些情况下有办法做到这一点(来自Роман Яковский 的回答)...
最灵活的方法是在子模块的 gitdir
/info/exclude 文件中添加忽略规则。
cd path/to/parent/repo/.git/modules/module-name/info
vi exclude
添加模式,因为它会出现在子模块回购的 .gitignore
文件中。
您可以通过
确认子模块的gitdir
在哪里
cat path/to/parent/repo/submoduledir/.git
这让您可以确切地指定应该忽略的内容;但这种方法的缺点是 gitdir
/info/exlcude 不是通过推送或获取传播的,因此必须单独配置每个 repo。
如果你不需要对被忽略的文件如此挑剔 - 例如,如果你可以说 "any worktree changes in the submodule should be ignored" - 那么你可以在模块定义(.gitmodules)中指定一个忽略规则,这当然是承诺工作的一部分。 gitmodules 文档中解释了可能的忽略规则:https://git-scm.com/docs/gitmodules
在 .gitmodules
中添加 ignore = all
到子模块。
ignore
还有更多选项,你可以在git help config
中阅读,搜索submodule.<name>.ignore
.
在我的 git 存储库中,我导入了一些其他项目作为子模块。到目前为止,一切都很好。然而,导入项目的维护者对他们的 .gitignore
文件有点马虎。因此,在构建导入的项目后,git status
(在子模块内)列出了大量未跟踪的文件。因此,git status
在我自己的项目中说:
modified: <submodule> (untracked content)
我的问题是:有什么方法可以告诉 git
忽略这些未跟踪的文件而不修复上游 .gitignore
文件?
我完全知道可能的答案是 "no",而且我看到
UPDATE - 在评论中提出了问题:父回购能否自动分发这些忽略规则。如果您使用我建议的原始方法,据我所知,答案是 "no"。然而,在某些情况下有办法做到这一点(来自Роман Яковский 的回答)...
最灵活的方法是在子模块的 gitdir
/info/exclude 文件中添加忽略规则。
cd path/to/parent/repo/.git/modules/module-name/info
vi exclude
添加模式,因为它会出现在子模块回购的 .gitignore
文件中。
您可以通过
确认子模块的gitdir
在哪里
cat path/to/parent/repo/submoduledir/.git
这让您可以确切地指定应该忽略的内容;但这种方法的缺点是 gitdir
/info/exlcude 不是通过推送或获取传播的,因此必须单独配置每个 repo。
如果你不需要对被忽略的文件如此挑剔 - 例如,如果你可以说 "any worktree changes in the submodule should be ignored" - 那么你可以在模块定义(.gitmodules)中指定一个忽略规则,这当然是承诺工作的一部分。 gitmodules 文档中解释了可能的忽略规则:https://git-scm.com/docs/gitmodules
在 .gitmodules
中添加 ignore = all
到子模块。
ignore
还有更多选项,你可以在git help config
中阅读,搜索submodule.<name>.ignore
.