【问题标题】:How to create two Git repositories in the same base directory, without using branches?如何在不使用分支的情况下在同一个基本目录中创建两个 Git 存储库?
【发布时间】:2011-08-09 10:05:33
【问题描述】:

我们目前正在将我们的 Magento Enterprise(电子商务 Web 应用程序)文件迁移到 Git。 httpdocs/.gitignore 文件包含以下内容:

app/design/frontend/company/website/
skin/frontend/company/website/

在初始化、提交和推送 httpdocs/ 之后,我们的第一个 Git 存储库就成功创建了。我们现在想将上述两个目录放入它们自己的单独存储库中。 (一起,在一个存储库中!)我们在这里遇到的问题是这些目录共享一个公共根目录,该根目录已经包含我们的第一个 Git 存储库;即:httpdocs/

我已经阅读了子模块功能可以在现有树的子目录中嵌入其他存储库。但是,例如 kernel.orggit-scm.com 的文档似乎非常复杂,以至于我想知道这是否真的是前进的道路。我们只需要两个独立的存储库,它们恰好具有相同的根目录。

我读过的另一种可能的解决方案可能是从 app/design/frontend/company/website/ 初始化并添加 skin/frontend/company/website/ 作为移植点,以便将这些目录连接在一起。然而,再一次,这似乎过于复杂,并且打算在从另一个版本控制系统迁移到 Git 时使用。

【问题讨论】:

  • 您不能有两个具有相同根目录的存储库。我想使用子模块将是唯一的选择
  • 建议您先阅读 git 最佳实践,但如果您确实需要两个单独的存储库,则创建两个文件夹并将它们符号链接到目标
  • Anton,感谢您提出的符号链接建议,我们将继续这样做。
  • 安东,如果您将其添加为更下方的答案,我将选择它作为我接受的答案。我是 Stack Overflow 上的新手,所以我还不能在本节中对你的评论进行投票。

标签: git magento git-submodules git-subtree git-slave


【解决方案1】:

您将不得不使用子模块或通过子树合并链接不同的存储库。

如果您采用子模块路线,请考虑使用gitslave,因为如果您正在积极开发两个存储库,它将为您节省大量手动步骤。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您可以查看subtree merging - 这是使用子模块的一种替代方法

    在继续之前完成这些步骤并了解它的作用。

    尽管像 Anton 一样,您尝试做的事情可能不是最佳实践。事实上,它可能会导致您遇到其他问题!

    【讨论】:

      【解决方案3】:

      从 git-1.7.11 开始,一个子树命令被添加到 git。 它完全符合您的要求,没有子模块的问题,也没有子树合并的麻烦。 (子树命令与子树合并不同)

      这里有一篇相关的博文:enter link description here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-23
        • 1970-01-01
        • 2014-09-15
        • 2023-04-05
        • 1970-01-01
        • 2013-12-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多