添加现有的 git 存储库作为子模块

Dou*_*ock 1 git shell git-submodules

我正在重新组织我的点文件并具有以下目录结构:

\n\n
dotfiles\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .vim\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 colors/\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ftplugin/\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pack/\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my_plugins/\n\xe2\x94\x82   \xe2\x94\x82       \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 opt/\n\xe2\x94\x82   \xe2\x94\x82       \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 nerdtree/\n\xe2\x94\x82   \xe2\x94\x82       \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .git\n\xe2\x94\x82   \xe2\x94\x82       \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 vimwiki/\n\xe2\x94\x82   \xe2\x94\x82       \xe2\x94\x82       \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .git\n\xe2\x94\x82   \xe2\x94\x82       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 start/\n\xe2\x94\x82   \xe2\x94\x82           \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 fugitive/\n\xe2\x94\x82   \xe2\x94\x82           \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .git\n\xe2\x94\x82   \xe2\x94\x82           \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 syntastic/\n\xe2\x94\x82   \xe2\x94\x82           \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .git\n\xe2\x94\x82   \xe2\x94\x82           \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 vimade/\n\xe2\x94\x82   \xe2\x94\x82           \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .git\n\xe2\x94\x82   \xe2\x94\x82           \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 vim-css-color/\n\xe2\x94\x82   \xe2\x94\x82               \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .git\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 vimrc\n
Run Code Online (Sandbox Code Playgroud)\n\n

有 6 个目录是 github 存储库,并且已经克隆到它们的目录中。

\n\n

我现在想要控制整个 dotfiles 目录版本。\n如何添加这六个.../.git存储库作为子模块添加到顶级存储库,而无需重新克隆包。

\n\n

请注意,这里提出了类似的问题,但给出的说明不清楚。\n我需要的是逐步解决方案,将整个 .vim 目录添加到顶级存储库。

\n

Sau*_*ari 5

这是一个逐步过程:

\n
# dotfiles directory is current directory\ngit init \n\n# Add already cloned repos\ngit submodule add <github-repo1-link> <path-to-already-cloned-repo1>\ngit submodule add <github-repo2-link> <path-to-already-cloned-repo2>\n.\n.\n.\n\n# Add other files for staging\ngit add .\n\n# Commit the changes\ngit commit\n
Run Code Online (Sandbox Code Playgroud)\n

正如子模块的 git 文档中提到的,子模块的 add 命令将路径作为可选参数。

\n
git submodule add <repository> [<path>]\n
Run Code Online (Sandbox Code Playgroud)\n
\n

可选参数<path>是克隆子模块在超级项目中的相对位置。如果<path>未给出,则使用源存储库的规范部分(“repo”代表“/path/to/repo.git”,“foo”代表“host.xz:foo/.git”)。如果<path>\n存在并且已经是有效的 Git 存储库,则将其暂存\n以进行提交,而不进行克隆。除非使用--name<path>来指定逻辑名称,否则还用作子模块\xe2\x80\x99s\n其配置条目中的逻辑名称。

\n
\n