Github "nested" 个存储库但不是子模块
Github "nested" repositories but not submodules
我想将包含许多子文件夹的整个文件夹推送到新的 github 存储库。问题是其中一些子文件夹包含 .git 和 .gitignore 所以它们本身是 git 回购。我希望这些子文件夹也被推送到我的新仓库,但不是作为子模块,就像里面有自己文件的普通文件夹一样。
你不能。
真的吗?
好吧,你大多数不能。
一个 Git 存储库 不能 包含另一个 Git 存储库。任何子目录中的 .git
目录告诉外部 Git 内部存储库是一个存储库。1 Git 将拒绝添加它,除非作为子模块。您可以 重命名或删除 .git
目录,从而使子目录不再包含 Git 存储库。一旦内部工作树只是 tree,而不是 repository,您就可以添加它。现在它只是文件,而不是提交,所以一切都很好。如果您对此表示满意,那就去做吧;实现起来很简单。 (这让我想知道你为什么将其作为问题发布。)
还有git subtree
:见
1比那个稍微复杂一点,但是效果差不多。外部 Git 不会存储内部 Git 存储库的原因是,如果存储了,您可以创建一个存储库,在克隆时包含另一个带有预加载 .git/config
的存储库文件。此 .git/config
文件可能包含破坏安全的指令,这些指令会导致安全被破坏。所以 Git 拒绝保存任何名为 .git
.
的东西
我想将包含许多子文件夹的整个文件夹推送到新的 github 存储库。问题是其中一些子文件夹包含 .git 和 .gitignore 所以它们本身是 git 回购。我希望这些子文件夹也被推送到我的新仓库,但不是作为子模块,就像里面有自己文件的普通文件夹一样。
你不能。
真的吗?
好吧,你大多数不能。
一个 Git 存储库 不能 包含另一个 Git 存储库。任何子目录中的 .git
目录告诉外部 Git 内部存储库是一个存储库。1 Git 将拒绝添加它,除非作为子模块。您可以 重命名或删除 .git
目录,从而使子目录不再包含 Git 存储库。一旦内部工作树只是 tree,而不是 repository,您就可以添加它。现在它只是文件,而不是提交,所以一切都很好。如果您对此表示满意,那就去做吧;实现起来很简单。 (这让我想知道你为什么将其作为问题发布。)
还有git subtree
:见
1比那个稍微复杂一点,但是效果差不多。外部 Git 不会存储内部 Git 存储库的原因是,如果存储了,您可以创建一个存储库,在克隆时包含另一个带有预加载 .git/config
的存储库文件。此 .git/config
文件可能包含破坏安全的指令,这些指令会导致安全被破坏。所以 Git 拒绝保存任何名为 .git
.