【问题标题】:Git Subtree merge strategy - how does the setup itself carry over across cloning?Git 子树合并策略 - 设置本身如何跨越克隆?
【发布时间】:2013-12-25 22:08:40
【问题描述】:

当其他人克隆您的存储库时,其中包含使用合并策略创建的子树,更新子树所需的远程不存在。需要完成子树设置的哪些步骤(以https://help.github.com/articles/working-with-subtree-merge 为例)以便在克隆后使子树更新正常工作?

【问题讨论】:

    标签: git git-subtree


    【解决方案1】:

    要显式且独立于上游更新子树,您需要按照您的指示重新添加远程。在新的克隆仓库中:

    $ git remote add -f <subtree-repo> <subtree-repo-url>
    $ git pull -s subtree <subtree-repo> <branch>
    

    对于您提供的链接,它将类似于,

    $ git clone /Users/tekkub/tmp/test my-test-clone
    $ cd my-test-clone
    $ git remote add -f cork git://github.com/TekNoLogic/Cork.git
    $ git pull -s subtree cork master
    

    您还可以使用 git 上最新版本支持的 git subtree pull


    问题中的依赖场景并不清楚,但您也可以简单地拉取您克隆的 repo 以获取所有子树更新:

    (repo1)
    (repo2 [subtree: repo1]) -- clone --> (repo3)
    
    repo1 $ git commit ...
    repo2 $ git pull -s subtree ...
    repo3 $ git pull
    

    因此,当repo2repo1 更新时,您只需将git pull 放入repo3,您将获得它的所有提交。只有当你打算切断repo3repo2之间的依赖关系时,你才应该使用分界线上方的命令,否则如果你同时使用pullpush上游和pull -s subtree,很容易进入频繁不愉快的合并。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多