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
如果你想避免变基,现在你可以强行移动分支 b
和 a
的指针,但我认为这更容易出错:
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
我有几个分支指针,除了一个是另一个的父节点:
* <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
如果你想避免变基,现在你可以强行移动分支 b
和 a
的指针,但我认为这更容易出错:
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