klo*_*lor 1 git version-control repository git-extensions git-submodules
我有一个GIT存储库,其中包含子文件夹作为GIT子存储库。
+ main (local GIT repo)
+ subdirectory1
+ plugin1 (created as local GIT repo)
+ plugin2 (created as local GIT repo)
+ subdirectory2
+ subdirectory2a
+ plugin3 (created as local GIT repo)
+ subdirectory3
Run Code Online (Sandbox Code Playgroud)
plugin1,plugin2,plugin3是主GIT存储库的子文件夹(subrepos)。插件1,插件2,插件3也是作为本地GIT存储库启动的,并添加了内容和历史记录。
我想将plugin1,plugin2,plugin3 GIT子存储库转换为子模块或主GIT存储库。
我想在插件GIT仓库中单独进行开发,但仍保留为子文件夹,也仍然显示为主要GIT仓库中的链接。我使用GIT Extensions作为开发版本控制GUI。
转到主目录,签出master分支,然后执行以下Git命令为plugin1创建一个新的子模块:
git submodule add (url_to_plugin1_repository) subdirectory1/plugin1sm
Run Code Online (Sandbox Code Playgroud)
这里的“ url_to_plugin1_repository”指向您当前的plugin1的 Git存储库。将创建一个新目录,调用subdirectory1 / plugin1sm,它将跟踪您的远程存储库。我给它起了一个不同的名字,以区别于不是子模块的plugin1目录。请注意,Git将从远程URL 克隆plugin1sm目录的数据,而不仅仅是从本地复制。话虽如此,如果您在本地plugin1存储库中有任何未提交的更改,则应在执行上述步骤之前提交并推送它们。
此时,从主目录执行git status 应该显示类似以下内容:
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# new file: .gitmodules
# new file: subdirectory1/plugin1sm
Run Code Online (Sandbox Code Playgroud)
由于您位于主目录中,因此新的子模块在变更集中显示为“文件”。您可以使用以下命令来提交此更改:
$ git add subdirectory1/plugin1sm
$ git commit -m "Created submodule for plugin1"
$ git push origin master
Run Code Online (Sandbox Code Playgroud)
您可能会想到的下一个问题是如何使用新的子模块以及主Git存储库。让我们从研究plugin1sm目录中的文件时发生的事情开始。当您在plugin1sm目录中工作时,Git会跟踪更改并表现出该目录之外的任何信息。当需要提交并推送更改时,请使用以下预期命令:
$ cd subdirectory1/plugin1sm
$ git add <yourfile>
$ git commit -m "modified my file"
$ git push
Run Code Online (Sandbox Code Playgroud)
但是主存储库呢?这是一些有趣的地方。由于您修改了plugin1sm子模块,因此它将在主存储库的变更集中显示为修改后的“文件”。要继续,您可以添加子模块并使用以下命令将其推送:
$ cd ../../
$ git add subdirectory1/plugin1sm
$ git commit -m "updated my submodule"
$ git push origin master</code>
Run Code Online (Sandbox Code Playgroud)
综上所述,子模块中的基本Git工作流程将照常进行,在主存储库中,您需要记住整个子模块将显示为文件。事情比我们在这里考虑的简单用例要复杂得多,但是希望这可以使您走上正确的道路。
您可以对plugin2和plugin3目录重复此过程。完成子模块的创建后,您应该可以删除原始的插件目录。
| 归档时间: |
|
| 查看次数: |
1769 次 |
| 最近记录: |