我最近将我的点文件重组为位于~/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中。这些插件是...
您应该在每个子模块中添加.gitignore
。由于所述子模块就像嵌套的Git存储库,因此它们会处理自己的忽略规则,并且它们的状态不会受到父存储库的.gitignore
(如explained here)的影响。
VonC对ignore = untracked
的推荐有效,但是您必须为每个此类子模块进行更改。
如果您想一劳永逸地解决问题,可以在每个git存储库上通过git config --global core.excludesfile ~/.gitignore_global
配置一个全局gitignore模式,然后将doc/tags
添加到$ HOME / .gitignore_global。
本的答案是一个好的开始。但是对于这种特定的忽略规则,我不喜欢全局设置。
首选每个子模块的本地配置,以及子模块根存储库中的集中忽略文件:
我认为这里的基本问题是您试图忽略“跟踪的”更改。 .gitignore
仅忽略对存储库的“未跟踪”更改。为了进行验证,您可以修改回购中的某些文件(已跟踪),也可以将其添加到.gitignore
文件中。在执行git status
时,您将看到该文件仍列为“已修改”。您的子模块存储库也被主存储库跟踪,因此仅将gitignore添加到父存储库将不起作用。根据其他建议,可以添加.gitignore
规则单个存储库,或者如果您正在使用最新的git版本,则可以使用git status --ignore-submodules
。