Git rebase 多个分支的多个提交

问题描述 投票:0回答:1

我有一个看起来像这样的 git dag:

* commit A - main
|
|  * commit B - branch1
|  |
|  * commit C - branch2
|  |
|  * commit D
|/
* commit E (this is the old main I worked on top of)

我最初在提交 E 的基础上工作,其中

main
曾经是,但后来我的同事进行了一些更新,
main
得到了另一个提交,提交 A。

我有两个分支,

branch1
branch2
,它们描述单独的更改,但是
branch1
取决于
branch2
中所做的更改,所以我想将
branch1
保留在
branch2
之上。

由于我的同行所做的更新,我想在新的

main
提交之上重新设置分支 1 和分支 2。也就是说,我想将提交 B、C 和 D 变基到 A 之上。但是,我想将
branch1
保持在
branch2
之上,并且最好在不强制移动分支的情况下执行此操作。

最简单的方法是

$ git checkout branch1
$ git rebase main
$ git checkout HEAD~ # move back one commit to where branch2 should be
$ git branch -f branch2 # force branch2 to be just before branch1

但这很容易出错。是否有 git-rebase (或其他方法)的标志可以对分支进行变基,同时保留中间提交的所有分支标签?

git branch rebase
1个回答
1
投票

您想使用

branch1
选项重新设置
--update-refs
的基数:https://git-scm.com/docs/git-rebase#Documentation/git-rebase.txt---update-refs

自动强制更新任何指向正在重新确定基础的提交的分支。在工作树中签出的任何分支都不会以这种方式更新。

所以使用命令:

$ git checkout branch1
$ git rebase --update-refs main
© www.soinside.com 2019 - 2024. All rights reserved.