2016-11-04 7 views
0

у меня есть:изменения Replay ammended совершить на другой ветке

1) создано branch1

2) совершенные commitA1 локально на branch1

3) выезд на branch2 (commitA1 применяется)

4) Теперь, на branch2 Я сделал некоторые другие коммиты (commitB1, commitB2 и т. Д.), Поэтому он выглядит как:

----commitB2----- 
----commitB1----- 
----commitA1----- 

5) Затем я вернулся в branch1 потому что нужно изменить некоторые вещи. Я внес изменения в commit1A

6) Я понял, что мне нужны эти недавние измененные изменения также на branch2.

Здесь, мой вопрос: как применить эти изменения к branch2 самым быстрым способом? Я хочу сохранить существующую иерархию, поэтому я хочу, чтобы эти изменения были применены к commitA1 по адресу branch2 (так до commitB1 и commitB2).

Я думал, что я мог cherry-pick, но это дает конфликтов слияния, и после разрешения это выглядит следующим образом:

----commitA1----- 
----commitB2----- 
----commitB1----- 
----commitA1----- 

Спасибо.

ответ

1
  1. checkout branch2 и git reset --hard HEAD^ отменить cherry-pick.
  2. git format-patch branch1^..branch1 --stdout > patch сделать патч, который применяет изменения с поправками commit1A.
  3. git rebase -i HEAD~4, который открывает редактор с содержимым, как показано ниже:

    pick ed4dcf2 foo 
    pick 6af0cca commitA1 
    pick e9cfa08 commitB1 
    pick d9856c4 commitB2 
    (snip) 
    
  4. Редактировать содержимое, как показано ниже:

    e ed4dcf2 foo 
    d 6af0cca commitA1 
    pick e9cfa08 commitB1 
    pick d9856c4 commitB2 
    

    Это означает, что будет редактировать после совершения Foo и упасть commitA1

  5. Сохраните и закройте редактор, который начнет перезагрузку.
  6. Перезагрузка останавливается после foo. Затем примените патч на git apply patch, удалите файл исправления, git add изменений и git commit их (без --amend).
  7. git rebase --continue, чтобы возобновить rebase, который применяет commitB1 и commitB2.

 Смежные вопросы

  • Нет связанных вопросов^_^