Подтвердить что ты не робот

Как переместить фиксацию между ветвями в Git?

Я уверен, что это простая вещь, на которую были заданы вопросы и ответы, но я не знаю, какие условия искать. У меня есть это:

    /--master--X--Y
A--B
    \--C--D--E

Где я совершил C, D и E (только локально) на ветке, но потом понял, что D и E действительно независимы от C. Я хочу переместить C в свою ветвь и сохранить D и E для позже. То есть, я хочу это:

                   /--C
    /--master--X--Y
A--B
    \--D--E

Как вырвать C из под D и E?

4b9b3361

Ответ 1

Вы можете использовать git cherry-pick для захвата C и поместить его в Y. Предполагая, что Y существует в качестве вершины ветвь с именем branch-Y:

$ git checkout branch-Y
$ git cherry-pick C

Итак, теперь C находится поверх Y. Но D и E также по-прежнему содержат C (выбор вишни не перемещает фиксацию, он просто делает копию). Вам нужно будет переупорядочить D и E сверху B. Предполагая, что E является концом branch-E, а B - branch-B, вы можете:

$ git checkout branch-E
$ git rebase --interactive branch-B

Это откроет интерактивный сеанс переадресации. Просто удалите commit C целиком и оставьте D и E неповрежденными. Затем вы получите D и E, которые будут сбрасываться поверх B без C.