2012-05-18 2 views
1

У меня было что-то вроде этого:Git перебазироваться редактировать и несколько ветвей

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

После того как я нормированный В и изменил его на главном отделении я получил что-то вроде этого:

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

Мои намерения s должен был отредактировать B для всех филиалов и получить что-то вроде этого:

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

Как это исправить?

Спасибо за помощь.

ответ

1

Предполагая, что вы можете вернуться к исходному графу (посмотрите на фиксацию восстановления с помощью reflog), похоже, было бы проще сделать изменение мастером и слить его (с -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 
Смежные вопросы