我无法让 Git .gitignore 文件忽略包含 Vim 插件包目录的目录。我在 macOS Mojave 上运行 Git 版本 2.22.0。我运行 Vim 8.0 并使用 Vundle 来管理我的 Vim 插件。我的 Vim 插件目录结构如下所示:
/Users/smith/dotfiles/.vim/bundle/Vundle.vim
/Users/smith/dotfiles/.vim/bundle/ansible-vim
/Users/smith/dotfiles/ctrlp.vim
...
我的 Git 目录的根目录是/Users/smith/dotfiles。
每个捆绑目录都包含自己的 Git 存储库,这样当我运行“git status”时,我会在每个目录中看到类似以下内容:
modified: .gitignore
modified: .vim/bundle/Vundle.vim (new commits)
...
我不知道如何使用 Vundle 安装这些 bundle ,从而忽略每个 bundle 的 .git 目录。也许我应该使用子模块,但我没有。
我认为我真的不需要跟踪这些包目录,并且更愿意让 Git 忽略它们。但无论我在 .gitignore 文件中放入什么,每当我运行“git status”时,我仍然会看到这些包含新提交的包目录。
这是我的 .gitignore:
other/ipythop/profile_default/history.sqlite
.DS_Store
.vim/.netrwhist
.vim/bundle/
*.*.swp
我尝试了很多事情:
.vim/bundle/
.vim/bundle
.vim/bundle/*
我什至尝试过像这样包含每个目录,但这并不能阻止它们出现:
.vim/bundle/Vundle.vim
我做错了什么?
最佳答案
从您提供的输出来看,您实际上正在使用子模块。 (new commits)
文本仅针对子模块显示。您可能没有 .gitmodules 文件,因为子模块并不严格需要它们,尽管通常建议使用它们。
如果您不想将它们作为子模块进行跟踪,则可以运行 git rm 来删除它,但请注意这可能会删除那里的 Git 存储库,因此请备份您想要的任何内容那里。然后,您可以将这些路径添加到您的 .gitignore
文件中,Git 将正确忽略它们。 Git 现在不会忽略它们,因为如果它们已经被跟踪,将它们添加到 .gitignore
中不会执行任何操作。
如果你想将它们添加为子模块,那么你可以创建一个空的 .gitmodules
文件并运行 git submodule add
(可能使用 -f
参数(如果需要)为它们设置 Remote 。
关于git - .gitignore 是否不会忽略包含 .git 子目录的目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57515199/