我正在为我的MacVim安装创建一个git存储库。我的存储库中的一些插件有自己的.git文件夹和repo。问题是......当我尝试将其中一个文件夹添加到我的主存储库时,它什么也没做。
我的猜测:
我无法添加该文件夹,因为它本身就是一个git repo。我必须添加为子模块或删除.git文件夹。
如何将子回购添加为子模块?
bryan-mini:.vim bsaltzman$ git status
# On branch master
# Changes not staged for commit:
# (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: bundle/YouCompleteMe (modified content)
# modified: bundle/nerdtree (modified content)
# modified: bundle/ultisnips (modified content)
#
no changes added to commit (use "git add" and/or "git commit -a")
// This
bryan-mini:.vim bsaltzman$ git add bundle/YouCompleteMe/
// OR THIS
bryan-mini:.vim bsaltzman$ git submodule add bundle/YouCompleteMe/
repo URL: 'bundle/YouCompleteMe/' must be absolute or begin with ./|../
bryan-mini:.vim bsaltzman$ git status
# On branch master
# Changes not staged for commit:
# (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: bundle/YouCompleteMe (modified content)
# modified: bundle/nerdtree (modified content)
# modified: bundle/ultisnips (modified content)
#
no changes added to commit (use "git add" and/or "git commit -a")
答案 0 :(得分:4)
看起来您可能已经正确地将这些存储库添加为子模块,但您已更改/添加/删除了这些存储库中的文件。如果你cd到bundle / nerdtree并做一个'git status'它会告诉你什么是不同的。如果您将子模块恢复到干净状态,那么顶级模块应该停止说“修改内容”
另外,你的命令:
git submodule add bundle/YouCompleteMe/
不正确。 'git submodule add'需要一个像这样的repo url:
git submodule add https://github.com/Valloric/YouCompleteMe.git
但是从您的输出中看起来您已经在某些时候正确地完成了这一操作。您似乎正在使用Pathogen来管理您的子模块 - 它的文档应该会引导您完成此过程。或者你可以切换到Vundle,这显然有一些优势(我个人仍然在病原体上)。
答案 1 :(得分:0)
在子文件夹中添加存在重新存储的正确方法很简单:
父文件夹中的 git submodule add (repo url)
。
例如:
cd ~/.vim/bundle
git submodule add https://github.com/Valloric/YouCompleteMe.git