1

我有这样的事情:

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

在我重新定位到 B 并在 master 分支上对其进行更改后,我得到了这样的结果:

     /-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

我该如何解决?

感谢帮助。

4

1 回答 1

1

假设您可以回到起始图(使用 reflog 查看提交恢复),似乎更容易进行更改以掌握并将其(使用 --no-ff)合并到分支 1 和分支 2:

$ 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
于 2012-05-21T07:33:46.297 回答