如何正确更新git子树

时间:2019-09-02 06:35:42

标签: git git-subtree

比方说,我有一个存储库Repo,现在我想添加文件夹Common,这是单独的存储库。因此结构应如下所示:

Repo
    myfile.txt
    Common
        anotherfile.txt

据我所知,至少有两种方法可以做到:子树子模块。阅读一些git教程和手册后,我得出的结论是 subtree 是我想要的。

好,所以我已经将该文件夹添加到我的仓库中了:

git subtree add --prefix Common https://github.com/my/Common.git master --squash

好,现在看起来像预期的那样。一段时间后,我想更新子树文件夹。但不幸的是,到目前为止,我发现的唯一方法是:

git subtree pull --prefix Common https://github.com/my/Vommon.git master --squash

为什么我应该再次输入资源库网址?那不是存储在git结构中的某个地方吗?如果我有几个子树怎么办?我认为没有人记得所有网址。

有没有一种简单的方法可以做到这一点?也许我想念什么?

1 个答案:

答案 0 :(得分:0)

  

为什么我应该再次输入资源库网址?那不是存储在git结构中的某个地方吗?

不。 URL与子模块一起存储,但不与子树一起存储。子树已完全集成到存储库中,它不记得它是一个单独的子树,也不记得它来自何处。

  

如果我有几个子树怎么办?

创建git别名或shell别名或脚本以拉/推许多子树。

或切换回子模块。它们有很多缺点,但至少他们记得从哪里克隆出来的。