我有一个使用git进行管理的django项目。我将其git push到我的主机。现在,我想能够将其中一个目录(包括所有子目录)推送到另一个git仓库。如果可能的话,怎样才能做到呢?
编辑:所以我希望那个目录本身成为一个git仓库。
我有一个使用git进行管理的django项目。我将其git push到我的主机。现在,我想能够将其中一个目录(包括所有子目录)推送到另一个git仓库。如果可能的话,怎样才能做到呢?
编辑:所以我希望那个目录本身成为一个git仓库。
您可以查看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
切换到正确的版本。 然后,您返回到主存储库,使用以下命令暂存并提交新的子模块版本:git add library-code
git commit -m 'Change the submodule version'
主仓库的树只存储子模块应该位于的版本,因此当您推送主仓库时,不会推送子模块中的任何文件。
为了拆分这个子目录并保留历史记录,您需要克隆原始仓库并使用git filter-branch
重写历史记录,如本回答所述:
然后,您可以将其推送到新创建的GitHub仓库中,返回原始项目,删除子目录,并用上面描述的子模块替换它。
如果您对Git概念不太熟悉,则可能会有困难 - 我建议您事先阅读有关Git子模块的资料。
当您对特定目录进行更改、暂存这些更改并提交和推送时,您实际上正在“推送”该目录。
如果其他 Git 存储库仅具有您要推送的目录,并且这就是您希望将其作为存储库本身的原因,则可以查看 Git 子模块。
git filter-branch
步骤 - 您可以将子目录的内容复制到新创建的git存储库中,并将其推送到GitHub。 - Mark Longair