是否可能在另一个git回购中包含git回购

是否可能在另一个git回购中包含git回购,git,git-submodules,Git,Git Submodules,我有一个用git管理的django项目。我要把它推给我的主人。现在,我希望能够将其中一个目录(包括所有子目录)推送到另一个git回购。如果可能的话,怎么可能呢 编辑:所以我希望该目录本身就是一个git repo。当您对特定目录进行更改时,阶段性地进行这些更改并提交和推送,实际上就是在“推送”该目录 如果另一个Git repo只有您想要推送的目录,这就是为什么您希望它本身就是一个repo,那么您可以查看。您查看Git子模块了吗?它允许git存储库干净地嵌套,但保持完全独立 这意味着您可以拥有一个子

我有一个用git管理的django项目。我要把它推给我的主人。现在,我希望能够将其中一个目录(包括所有子目录)推送到另一个git回购。如果可能的话,怎么可能呢


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

当您对特定目录进行更改时,阶段性地进行这些更改并提交和推送,实际上就是在“推送”该目录


如果另一个Git repo只有您想要推送的目录,这就是为什么您希望它本身就是一个repo,那么您可以查看。

您查看Git子模块了吗?它允许git存储库干净地嵌套,但保持完全独立

这意味着您可以拥有一个子目录,该子目录具有不同的推/拉远程url和不同的提交树+日志,而不会扰乱主项目


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

git submodule add git://wherever/blah.git library-code
git commit -m "Added a new submodule called 'library-code'"
当您切换到
library code
子目录时,就好像父存储库不存在一样—您可以将
origin
更改为使用一个传输,您可以将其推到上面,然后将其推到完全独立的位置

要指定希望子模块处于特定版本,应切换到子模块,并使用
git checkout
切换到正确的版本。然后,您将更改回主存储库和stage,并通过以下方式提交新的子模块版本:

git add library-code
git commit -m 'Change the submodule version'
主存储库的树只存储子模块应该位于的版本,因此当您推送主存储库时,它不会推送子模块中的任何文件

为了分离此子目录,在保留历史记录的同时,您需要克隆原始存储库和用户
git filter branch
,以重写历史记录,如以下回答所述:

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


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

我的子目录中已经有代码,所以我想将它们转换为git repo,并将它们推送到新的远程repo(例如github)。你能举个这样做的例子吗?很抱歉,我对这些事情太生疏了:)你想保留子目录中所有内容的历史记录吗?当我将较大的repo推送到其他远程repo时,子模块又如何?这包括子模块的文件吗?在子模块中保存历史并不重要,只要大型回购中的历史没有弄糟。我希望我在编辑答案时已经添加了这些问题。如果您不关心子目录的历史记录,那么您就不必担心
git filter branch
步骤-您可以将子目录的内容复制到新创建的git存储库中,并将其推送到GitHub。