git - 是否有可能在另一个 git repo 中有一个 git repo

标签 git git-submodules

我有一个用 git 管理的 django 项目。我正在 git 将它推送给我的主机。现在,我希望能够将其中一个目录(包括所有子目录)推送到另一个 git 仓库。如果可能的话,这怎么可能?

编辑:所以我希望该目录本身就是一个 git 仓库。

最佳答案

你可以看看 git 对 submodules 的支持.您可以将第二个存储库作为子模块添加到您的主项目中,例如使用如下命令:

git submodule add git://wherever/blah.git library-code
git commit -m "Added a new submodule called 'library-code'"

当您更改到 library-code 子目录时,就好像父存储库不存在一样 - 您可以更改 origin 以使用可以推送的传输over 然后 push ,就好像它是完全独立的。

要指定您希望子模块处于特定版本,您应该切换到子模块并使用 git checkout 切换到正确的版本。然后你回到主存储库和阶段并提交新的子模块版本:

git add library-code
git commit -m 'Change the submodule version'

主存储库的树只存储子模块应该在的版本,所以当你推送主存储库时,它不会推送子模块中的任何文件。

为了拆分这个子目录,同时保留历史,你需要克隆你的原始存储库和用户 git filter-branch 来重写历史,如这个答案中所述:

然后您可以将其推送到新创建的存储库 GitHub 存储库,返回到您的原始项目,删除子目录,并将其替换为上述子模块。

如果您不是很熟悉 git 概念,那么这对您来说可能会有些困难 - 我建议您事先阅读 git 子模块。

关于git - 是否有可能在另一个 git repo 中有一个 git repo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7150424/

相关文章:

java - 程序如何知道自己的 git SHA?

git - 如何将子模块粘贴到修复标签上?

git:在子模块中管理多个 Remote

git - 我如何在一行中对所有子模块进行 git clone --recursive 和 checkout master?

git - 压缩第一次和第三次提交(不压缩第二次)

javascript - GitKraken预提交失败,但可在命令行提交中使用

node.js - 每次更改分支时如何避免 npm install?

java - 带有 GIT 命令的 ProcessBuilder 没有给出结果

git - 如何为具有私有(private) git 子模块的私有(private)仓库设置 GitHub Actions CI 服务?

ios - Git 子模块与 iOS/Mac 框架