假设我有以下内容
------------------Dev
\
Branch1------------------Branch2
\-----Branch3
而我想拥有 Branch1
在 Dev
所以我结账到 Branch1
而我 git rebase Dev
.
我希望能有这个分支机构 Branch1
移至 Dev
可是 Branch2
和 Branch3
?
什么都没有发生 Branch2
和 Branch3
,它们将保持原样,同样的历史。 下面是更详细的前后图。 这里是之前。
Dev: A -- B
\
Branch1: C -- D
\ \
Branch3: \ F
Branch2: E
而这里是之后,一旦你运行了。git rebase dev
从 Branch1
:
Branch1: C' -- D' (after rebase)
/
Dev: A -- B
\
C -- D <-- most likely no branch has a HEAD pointing here at this point
\ \
Branch3: \ F
Branch2: E
同样的历史记录应该存在于其他两个分支中,因为重命名只重写了你提到的目标分支的历史。
分支是附加在一个提交上的。
git checkout Branch1 && git rebase Dev
相当于 git rebase Dev Branch1
.
首先,它找出可以从 Branch1
和新到 Dev
.
然后,它将这些提交应用到 Dev
一个一个来。空的提交可以忽略。
最后,它移动到 Branch1
到最后的新提交。
在这个过程中。Branch2
和 Branch3
留在原地。
下面是前后的图。图片来自 学习货币分行.
之前:
后。
忽略 master
图上的。不允许删除 master
中的提交。C3
中的提交,是可以从 Branch1
和新到 Dev
. 它的应用到 Dev
和 C3'
是创建。Branch1
被移至 C3'
. C3
和其他提交的内容都没有变化,所以也没有改变 Branch2
和 Branch3
.
重现学习gitbranch过程的命令。
git checkout -b Dev
git commit
git checkout -b Branch1 C1
git commit
git checkout -b Branch2
git commit
git checkout -b Branch3 C3
git commit
git checkout Branch2
git commit
git rebase Dev Branch1