【问题标题】:subtrees in GITGIT 中的子树
【发布时间】:2018-07-06 17:50:47
【问题描述】:

这可能是一个简单的问题,但我仍在学习和理解 GIT... 在我看来,通过测试一些东西,当您将子模块添加到 Git 存储库时,您可以签入您的分支,并且您正在签入添加的子模块,以便您可以将其推送到远程存储库和其他人检查从 repo 中也会得到关于子模块的附加信息。

当我拥有相同的存储库并将另一个存储库添加为子树时,在我看来,您只是将内部添加到本地 GIT 实例中,因为当我签入分支时,我看不到任何方式其他检查该 repo 的人将获得允许他们拉入已添加子树的信息。是否正确 - 每个拉取远程仓库的用户都必须手动添加到子树的链接?

【问题讨论】:

    标签: git git-submodules git-subtree


    【解决方案1】:

    git submodule init 将从克隆存储库后添加的子模块中提取代码。

    每当添加了新的子模块时,git 都会为您添加的子模块创建一个 .gitmodules 文件和文件

    .gitmodules 文件存储项目 URL 和本地子目录映射。

    [submodule "mysubmodule"]
    path = Mysubmodule
    url = https://theurl
    

    您需要提交并推送.gitmodules 文件和子模块文件。

    当 git submodule init 在克隆存储库中完成时,它会获取所有链接的子模块代码。

    【讨论】:

    • 我了解子模块的工作原理。如果您仔细观察,我会问如何与子树一起使用
    【解决方案2】:

    使用 git 子树时,子树的整个 repo 会合并到子目录中的父 repo 中,因此其他用户无需运行额外的命令来访问其他 repo 内容。

    但是,他们不会看到其他 repo 的历史记录,也不会跟踪那里发生的正在进行的提交。使用 git subtree 更重要的是在历史记录中添加一个标记,使维护者可以轻松地通过从父 repo 中选择性地合并和拆分它们来推送和拉取子树中所做的更改。

    FWIW 从那以后我开始使用 git subrepo,我发现它具有与 git subtree 相同的所有好处,但缺点更少。但它们的工作方式相同。

    【讨论】:

      猜你喜欢
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 1970-01-01
      • 2014-04-15
      • 2015-06-14
      • 1970-01-01
      • 2012-11-07
      相关资源
      最近更新 更多