。gitignore文件添加到Git子模块中

问题描述 投票:59回答:4

我最近将我的点文件重组为位于~/Dropbox/dotfiles的Git存储库中,并且我正在使用病原体将所有Vim插件捆绑在~/Dropbox/dotfiles/home/.vim/bundle中。这些插件被添加为Git子模块。

现在问题是,当我运行Vim时,它会自动生成所有插件的文档,并将它们放在每个子模块目录中。这会将未跟踪的内容添加到子模块中,我想避免。

ruby-1.8.7-p330@gs ~/Dropbox/dotfiles ‹master*› $ git st
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   home/.vim/bundle/fuzzyfinder (untracked content)
#   modified:   home/.vim/bundle/l9 (untracked content)
#   modified:   home/.vim/bundle/matchit (untracked content)
#   modified:   home/.vim/bundle/ruby (untracked content)
#   ...
no changes added to commit (use "git add" and/or "git commit -a")

我试图在我的Git存储库的根目录中添加.gitignore文件,以忽略子模块内的所有doc文件夹,但这似乎不起作用:

home/.vim/bundle/**/doc

我的问题:是否可以忽略Git子模块中的文件和文件夹,或者可以配置Vim在Git存储库之外的文件夹中创建文档?

编辑:正如兰迪·莫里斯(Randy Morris)所指出的,这可能是Generating tags to different location by pathogen的副本>

我最近将我的点文件重组到了〜/ Dropbox / dotfiles的Git仓库中,并且我正在使用病原体将所有Vim插件捆绑到〜/ Dropbox / dotfiles / home / .vim / bundle中。这些插件是...

git vim gitignore git-submodules
4个回答
71
投票

您应该在每个子模块中添加.gitignore。由于所述子模块就像嵌套的Git存储库,因此它们会处理自己的忽略规则,并且它们的状态不会受到父存储库的.gitignore(如explained here)的影响。


8
投票

VonC对ignore = untracked的推荐有效,但是您必须为每个此类子模块进行更改。

如果您想一劳永逸地解决问题,可以在每个git存储库上通过git config --global core.excludesfile ~/.gitignore_global配置一个全局gitignore模式,然后将doc/tags添加到$ HOME / .gitignore_global。


2
投票

本的答案是一个好的开始。但是对于这种特定的忽略规则,我不喜欢全局设置。

首选每个子模块的本地配置,以及子模块根存储库中的集中忽略文件:


-2
投票

我认为这里的基本问题是您试图忽略“跟踪的”更改。 .gitignore仅忽略对存储库的“未跟踪”更改。为了进行验证,您可以修改回购中的某些文件(已跟踪),也可以将其添加到.gitignore文件中。在执行git status时,您将看到该文件仍列为“已修改”。您的子模块存储库也被主存储库跟踪,因此仅将gitignore添加到父存储库将不起作用。根据其他建议,可以添加.gitignore规则单个存储库,或者如果您正在使用最新的git版本,则可以使用git status --ignore-submodules

© www.soinside.com 2019 - 2024. All rights reserved.