【发布时间】:2013-12-25 22:08:40
【问题描述】:
当其他人克隆您的存储库时,其中包含使用合并策略创建的子树,更新子树所需的远程不存在。需要完成子树设置的哪些步骤(以https://help.github.com/articles/working-with-subtree-merge 为例)以便在克隆后使子树更新正常工作?
【问题讨论】:
标签: git git-subtree
当其他人克隆您的存储库时,其中包含使用合并策略创建的子树,更新子树所需的远程不存在。需要完成子树设置的哪些步骤(以https://help.github.com/articles/working-with-subtree-merge 为例)以便在克隆后使子树更新正常工作?
【问题讨论】:
标签: git git-subtree
要显式且独立于上游更新子树,您需要按照您的指示重新添加远程。在新的克隆仓库中:
$ 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
因此,当repo2 从repo1 更新时,您只需将git pull 放入repo3,您将获得它的所有提交。只有当你打算切断repo3和repo2之间的依赖关系时,你才应该使用分界线上方的命令,否则如果你同时使用pull,push上游和pull -s subtree,很容易进入频繁不愉快的合并。
【讨论】: