如果重设父分支而不重设子分支,子分支会发生什么?

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

假设我有以下内容

 ------------------Dev
     \   
     Branch1------------------Branch2
            \-----Branch3

而我想拥有 Branch1Dev 所以我结账到 Branch1 而我 git rebase Dev.

我希望能有这个分支机构 Branch1 移至 Dev 可是 Branch2Branch3?

git rebase
1个回答
1
投票

什么都没有发生 Branch2Branch3,它们将保持原样,同样的历史。 下面是更详细的前后图。 这里是之前。

Dev:      A -- B
           \
Branch1:    C -- D
             \    \
Branch3:      \    F
Branch2:       E

而这里是之后,一旦你运行了。git rebase devBranch1:

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

同样的历史记录应该存在于其他两个分支中,因为重命名只重写了你提到的目标分支的历史。


1
投票

分支是附加在一个提交上的。

git checkout Branch1 && git rebase Dev 相当于 git rebase Dev Branch1.

首先,它找出可以从 Branch1 和新到 Dev.

然后,它将这些提交应用到 Dev 一个一个来。空的提交可以忽略。

最后,它移动到 Branch1 到最后的新提交。

在这个过程中。Branch2Branch3 留在原地。

下面是前后的图。图片来自 学习货币分行.

之前:

enter image description here

后。

enter image description here

忽略 master 图上的。不允许删除 master 中的提交。C3 中的提交,是可以从 Branch1 和新到 Dev. 它的应用到 DevC3' 是创建。Branch1 被移至 C3'. C3 和其他提交的内容都没有变化,所以也没有改变 Branch2Branch3.

重现学习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
© www.soinside.com 2019 - 2024. All rights reserved.