如何使用 git 将文件夹挂接到另一个存储库

How to hook folder to another repository with git

我已经创建了 GitHub 存储库 X 并在本地进行了克隆。

然后我通过克隆另一个 GitHub 存储库 Y 在这个项目 X 中创建了目录 A。 然后我在这个项目X中更改了文件夹A中的一些文件。

现在我想添加、提交并将此文件夹 A 推送到我的项目 X 的​​ GitHub 远程。

如何删除对存储库 Y 的挂钩,并实际将文件夹 A 添加到存储库 X。

谢谢!

这在一定程度上取决于您要对这个文件夹做什么 A。如果您只想在您的存储库中拥有 A 中的这个 version/copy/snapshot,那么这很简单。您只需要在 X 存储库中添加 A 文件并提交它们。您甚至可以删除 /A/.git 文件夹,使 A 子目录不再是一个单独的 Git 存储库。

如果您想保留 A 的历史记录并希望将其保持足够的独立性,例如,您可以对 A 进行更改并将其保存到其中,而不是保留仅在父存储库 X 中发生更改,那么您应该查看 submodules。它们允许您引用另一个存储库 A 作为现有存储库 X 中的子模块。所以你 link A 变成 X 但仍然保持 A 独立。

您可以使用子模块或子树。 他们或多或少是一样的。

阅读here找出两者之间的区别。

主要思想是将内部文件夹作为 "standalone"(存储库或子树)

进行管理