.gitignore文件添加在Git子模块中

rub*_*iii 57 git vim gitignore git-submodules

我最近重组了我的dotfiles,住在一个Git存储库中~/Dropbox/dotfiles,我正在使用病原体将所有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")
Run Code Online (Sandbox Code Playgroud)

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

home/.vim/bundle/**/doc
Run Code Online (Sandbox Code Playgroud)

我的问题:有没有办法忽略Git子模块中的文件和文件夹,或者可能配置Vim在Git存储库外的文件夹中创建文档?

编辑:正如兰迪莫里斯所指出的,这可能是由病原体生成标签到不同位置的复制品

Von*_*onC 68

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

对于特定于vim的设置,正如Randy Morris在评论中提到的那样,请参阅SO问题" 通过病原体生成不同位置的标签 ".


注意:正如尼克在这篇评论中提到的,并且如" 通过病原体生成标签到不同位置 "的答案所示,配置如下:

[submodule "path/to/submodule"]
    path = path/to/submodule
    url = http://github.com/username/repo.git
    ignore = untracked  # <====
Run Code Online (Sandbox Code Playgroud)

将工作并使该子模块被忽略git status.
但" ignore = untracked" 至少意味着Git1.7.2.


注意:nurettin 在评论中提到:

ignore = dirty 为我做了

提交aee9c7d细节之间的差异untrackeddirty.

  • " dirty":只有超级项目和子模块中记录的提交差异HEAD才会被视为修改,对子模块工作树的所有更改都将被忽略.
    使用此值时,将不会扫描子模块的工作树更改,从而为大型子模块带来性能优势.

  • " untracked":仅忽略子模块工作树中未跟踪的文件,子模块中已更改HEAD和/或修改的文件将其标记为已修改.


Ben*_*nor 8

VonC建议的ignore = untracked工作,但你必须为每个这样的子模块进行更改.

如果要一劳永逸地解决问题,可以在每个git仓库上配置全局gitignore模式git config --global core.excludesfile ~/.gitignore_global,然后只需添加doc/tags到$ HOME/.gitignore_global.

请参阅https://help.github.com/articles/ignoring-files.