如何重新建立子树的基础?

时间:2020-02-13 13:35:36

标签: git git-subtree

我正在尝试Git subtree,并且需要一些帮助。

我有一个仓库A,其中有一个子树,该树是从上游仓库B生成的,位于文件夹A/b中。上游B/x中有一个文件,我可以看到等效文件A/b/x存在并且是最新的。如果我先修改上游文件A/b/x和下游文件B/x,则在调用git subtree push ...时会出现合并冲突,如预期的那样。

我可以执行git subtree pull ...并执行合并,该合并将应用到我的B/x编辑中。我更愿意执行rebase操作,将对B/x的更改应用到A/b/x编辑中。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

Git子树似乎不支持变基(作为“集成”更改的两种方法之一:变基或合并)。有TODO提到重新定基,但是我认为它是在不同的上下文中。

subtree pull命令甚至不发出git pull命令,而是将其分为两个必要的命令,即fetch + merge,否则我建议重写Pull的默认集成策略(pull.rebase)。

https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh#L870

如果我正确理解了您的情况,我认为您应该避免直接在其存储库中修改B/x。子树允许您修改A/b/x并使用subtree push将更改发送到子树的远程计算机。

无论哪种方式,子树都不是真正“变基”的。您始终可以直接为B远程建立基准,但是仍然需要合并A中无关的历史记录。这变得很棘手,对我而言,似乎需要交互式的变基。