假设我在GIT上有以下分支结构:
A --- B --- C --- D --- E
+---- F --- G
+---- H --- I
三个分支,共同基础C
。
我想要做的是交换B和C的顺序,以产生以下结构:
A --- C --- B --- D --- E
+---- F --- G
+---- H --- I
我该怎么办?
答案 0 :(得分:3)
从交互式rebase开始。
git checkout <branch-E>
git rebase -i <sha1-A>
重新排序B和C.这给了我们以下历史记录:
A --- C'--- B'--- D'--- E'
\
-- B --- C --- F --- G
\
-- H --- I
但是,我们不想为其他两个分支重复此操作。如果我们这样做,我们将为B和C创建新的提交,因为提交时间戳会有所不同。我们希望重用相同的提交。
我们可以使用更简单的rebase命令在其他两个分支中修复它:
git rebase --onto <sha1-B'> <sha1-C> <branch-G>
git rebase --onto <sha1-B'> <sha1-C> <branch-I>
这给了我们以下历史:
-- D'--- E'
/
A --- C'--- B'--- F'--- G'
\
-- H'--- I'