Git rebase编辑和一些分支

时间:2012-05-18 23:26:42

标签: git git-rebase

我有这样的事情:

     /-E-F - branch1
A-B-C - master
     \-X - branch2

在我改为B并在主分支上更改后,我得到了类似的结果:

     /-E-F - branch 
A-B-C
 \   \-X - branch2
  \-B*-C* - master

之后,我尝试在“分支”上以相同的方式重新编辑和编辑B,我得到了类似的内容:

 /B**-C**-E-F - branch 
A-B-C
 \   \-X - branch2
  \-B*-C* - master

我的目的是为所有分支编辑B并得到类似的东西:

      /-E-F - branch1
A-B*-C - master
      \-X - branch2

我该如何解决?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

假设你可以回到起始图(看看使用reflog进行提交恢复),看起来更容易让更改为master并合并它(使用--no-ff)进入branch1和branch2:

$ git checkout C
# make modifications
$ git commit
$ git checkout branch1
$ git merge --no-ff master
$ git checkout branch2
$ git merge --no-ff master

      /-E-F-G - branch1
     /     /
A-B-C-----D - master
     \     \  
      \-X---Y - branch2

否则:

     /-E-F - branch1
A-B-C - master
     \-X - branch2

$ git checkout B
# make your modifications
$ git commit

     /-E-F - branch1
A-B-C - master
   \ \-X - branch2
    \-B*

$ git rebase --onto B* B branch1

     /-E-F
A-B-C - master
   \ \-X - branch2
    \-B*-C*-E*-F* - branch1

$ git rebase --onto C* master branch2

     /-E-F
A-B-C - master
   \ \-X
    \-B*-C*-E*-F* - branch1
          \-X* - branch2

$ git checkout master
$ git reset --hard C*

     /-E-F
A-B-C
   \ \-X 
    \      /-E*-F* - branch1
     \-B*-C* - master
           \-X* - branch2