git - .gitignore 是否不会忽略包含 .git 子目录的目录?

标签 git

我无法让 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/

相关文章:

git - 在没有提示和没有别名的情况下将 git 与 diffmerge 一起使用

git checkout <提交> 。不删除提交后添加的文件

git - 无法索引文件

git - 概述列表 - 最常用的 git 命令

初始推送后 Git 忽略文件(只读)

git - 安装后删除 fail2ban.git 是否安全?

git - 在 Git 中将特定文件从一个提交移动到另一个提交?

windows - 在 Windows 上使用 SSH 的 Git

git - 执行 docker-compose : Building webserver unable to prepare context: unable to 'git clone' to temporary context directory: error fetching 时出错

git - 从当前 HEAD 创建一个新的 Git 存储库,将其设置为原始存储库的远程,并将 future 的更改镜像到两个存储库?