GIT: 对同一 "thread" 上的几个分支进行变基

GIT: Rebase several branches that are on the same "thread"

我有几个分支指针,除了一个是另一个的父节点:

* <branch Z
| + <branch c
| + _commit 
| + <branch b
| + _commit 
| + <branch a
| + _commit 
|/
+ _commit

是否可以一次性将它们全部变基为 branch Z,而不用一个一个变基?

没有

您必须重新设置每个分支的基线,这将避免您出错。我会:

git checkout a
git rebase z
git checkout b
git rebase a
git checkout c
git rebase b

解决方法

然而,您可以通过不实际重新设置每个分支来加快速度,但不确定它不会产生很大的不同。你可以:

重新设置分支 c:

git checkout c
git rebase Z

如果你想避免变基,现在你可以强行移动分支 ba 的指针,但我认为这更容易出错:

git checkout b
git reset --hard c~2 # 2 commits behind branch c.
git checkout a
git reset --hard b~2 # 2 commits behind branch b.

我会像这样在一个 rebase 中完成:

git checkout branchc
git rebase branchz
# if the results look ok:
git branch -f branchb branchc~2
git branch -f brancha branchc~4

还有一种方法可以做到3拍:

git rebase X brancha
git rebase --onto brancha branchb~2 branchb # rebase only the last 2 commits from branchb
git rebase --onto branchb branchc~2 branchc # rebase only the last 2 commits from branchc