1

私はこのようなものを持っていました:

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

どうすれば修正できますか?

手伝ってくれてありがとう。

4

1 に答える 1

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
于 2012-05-21T07:33:46.297 に答える