Git 如何重新设置子树的基础?

Git 如何重新设置子树的基础?,git,git-subtree,Git,Git Subtree,我正在试验,我需要一些帮助 我在文件夹a/B中有一个回购a,带有一个子树,由上游回购B生成。上游B/x中有一个文件,我可以看到等效文件a/B/x存在并且是最新的。如果我首先修改上游文件A/b/x,以及下游文件b/x,当我调用git子树push…时,我会得到一个合并冲突,正如预期的那样 我可以做一个git子树拉…,它执行一个应用于我的B/x编辑的合并。我更愿意执行rebase操作,其中对B/x的更改将应用于a/B/x编辑 如何做到这一点?Git子树似乎不支持rebase(作为“集成”更改的两种方法

我正在试验,我需要一些帮助

我在文件夹
a/B
中有一个回购
a
,带有一个子树,由上游回购
B
生成。上游
B/x
中有一个文件,我可以看到等效文件
a/B/x
存在并且是最新的。如果我首先修改上游文件
A/b/x
,以及下游文件
b/x
,当我调用
git子树push…
时,我会得到一个合并冲突,正如预期的那样

我可以做一个
git子树拉…
,它执行一个应用于我的
B/x
编辑的合并。我更愿意执行
rebase
操作,其中对
B/x
的更改将应用于
a/B/x
编辑


如何做到这一点?

Git子树似乎不支持rebase(作为“集成”更改的两种方法之一:rebase或merge)。有一个提到了再基地,但我认为这是在一个不同的背景下

子树pull命令甚至不发出git pull命令,而是将其拆分为两个必要的命令fetch+merge,或者我建议覆盖pull的默认集成策略(
pull.rebase

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


不管怎样,子树并不是真正的“重基”意识。您始终可以直接重新设置
B
远程数据库的基础,但仍然需要在
A
中合并不相关的历史记录。这变得很棘手,对我来说,似乎需要交互式的rebase。

Git子树似乎不支持rebase(作为“集成”更改的两种方法之一:rebase或merge)。有一个提到了再基地,但我认为这是在一个不同的背景下

子树pull命令甚至不发出git pull命令,而是将其拆分为两个必要的命令fetch+merge,或者我建议覆盖pull的默认集成策略(
pull.rebase

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

不管怎样,子树并不是真正的“重基”意识。您始终可以直接重新设置
B
远程数据库的基础,但仍然需要在
A
中合并不相关的历史记录。这会变得很棘手,对我来说,似乎需要交互式的重基