将Master分支合并到feature-branch,其中feature-branch还具有基于feature-branch的子分支

Cho*_*ala 6 git merge rebase git-merge git-rebase

我有一个来自 master 的功能分支。现在,master 分支已经高级,feature-branch 之上有许多子分支。我希望将所有新更改从主分支转移到我的功能分支中,并且不应干扰功能分支的任何现有子分支。

如果我在主分支上重新建立我的功能分支,则功能分支上的所有子分支都将陷入困境(根据我之前的经验)。

请告诉我我们该如何处理这个问题。

Cho*_*ala 13

我将主分支合并到我的功能分支中并解决了冲突。

git checkout master
git pull
git checkout feature-branch
git merge master
Run Code Online (Sandbox Code Playgroud)

这并没有干扰我的功能分支的现有子分支中的任何评论历史记录。

我确实在功能分支之上重新设置了子分支(带有最新的更改),一切看起来都很好。


Ale*_*ler 5

让我们尝试用几个一般性的例子来回答这个问题,因为我们不知道您的具体情况到底是什么样的。首先,在查看您所要求的案例之前,让我们就如何mergerebase不同之处达成一致,其中多个功能分支相互依赖。

一般情况说明 rebase 和 merge 之间的区别

正如您可能知道的merge那样,保留历史,同时rebase重写它。从上图中可以看出差异。

现在,让我们尝试用类似的插图来回答您最初的问题;其中两个功能分支(feature-1feature-2)相互依赖,目前落后于master

两个功能分支相互依赖的特殊情况

无论您决定如何将master的更改集成到feature-1mergerebase),feature-2都将保持原样(即没有新集成的从masterfeature-1 的更改)。如果您随后想要将所有更改集成到功能 2中,您将再次面临合并或变基的选择。

如果您决定将feature-2重新设置为feature-1(发布初始集成),那么 Git 会发现提交的内容ol42g已经存在,因此会自动从您的重新设置的feature-209qr2版本中删除这些补丁。

警告:对已发布的分支进行变基可能会给您的团队成员带来麻烦,因此,如果出现这种情况,请务必保持密切的对话。为了安全起见,不要对已经公开可用的分支进行变基。

希望现在您应该清楚您的选择是什么。=)