Как переместить фиксацию между ветвями в 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?
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.