我正在尝试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
编辑中。
我该怎么做?
答案 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
中无关的历史记录。这变得很棘手,对我而言,似乎需要交互式的变基。