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)
这并没有干扰我的功能分支的现有子分支中的任何评论历史记录。
我确实在功能分支之上重新设置了子分支(带有最新的更改),一切看起来都很好。
让我们尝试用几个一般性的例子来回答这个问题,因为我们不知道您的具体情况到底是什么样的。首先,在查看您所要求的案例之前,让我们就如何merge
和rebase
不同之处达成一致,其中多个功能分支相互依赖。
正如您可能知道的merge
那样,保留历史,同时rebase
重写它。从上图中可以看出差异。
现在,让我们尝试用类似的插图来回答您最初的问题;其中两个功能分支(feature-1和feature-2)相互依赖,目前落后于master。
无论您决定如何将master的更改集成到feature-1(merge
或rebase
),feature-2都将保持原样(即没有新集成的从master到feature-1 的更改)。如果您随后想要将所有更改集成到功能 2中,您将再次面临合并或变基的选择。
如果您决定将feature-2重新设置为feature-1(发布初始主集成),那么 Git 会发现提交的内容ol42g
已经存在,因此会自动从您的重新设置的feature-209qr2
版本中删除这些补丁。
警告:对已发布的分支进行变基可能会给您的团队成员带来麻烦,因此,如果出现这种情况,请务必保持密切的对话。为了安全起见,不要对已经公开可用的分支进行变基。
希望现在您应该清楚您的选择是什么。=)