Можно ли "переместить" ветку? - PullRequest
1 голос
/ 04 апреля 2020

Можно ли "переместить" ветку?

Например:

Ситуация после первой git pull:

A--B--C master
       \
        D--E--F working

Ситуация после обновления ветки master:

A--B--C--D--E master
       \
        M--N--O working

Теперь можно было бы переместить мою ветку working и получить что-то подобное (чтобы иметь обновленную ветку master с мой код, который находится в working ветви вместе)?:

A--B--C--D--E master
             \
              M--N--O working

Ответы [ 2 ]

3 голосов
/ 05 апреля 2020

Да, это можно сделать путем перебазирования, как ответил @FreshD. Хотя ваша работа останется прежней, ваша история git изменится.

В итоге у вас будет что-то подобное.

A--B--C--D--E master
             \
              M'--N'--O' working

Еще один способ достижения того же результата - через cherry-pick (мы создаем новую ветвь и cherry-pick наши недостающие коммиты из рабочей ветки).

git checkout master
git pull
git checkout -b working-copy
git cherry-pick M
git cherry-pick N
git cherry-pick O

(При наличии каких-либо конфликтов мы разрешаем их).

Также обратите внимание, что полная команда к предыдущему ответу

git checkout master && git pull
git checkout working
git rebase master
2 голосов
/ 05 апреля 2020

Да, это можно сделать с помощью rebase . Сначала проверьте вашу ветку, а затем снова перейдите к текущему мастеру.

git checkout working
git rebase master

Теперь ваша ветка основана на текущем мастере. Если вы уже нажали на рабочую ветку и хотите снова сделать pu sh с перебазированной версией, вы должны принудительно запустить pu sh. Будьте осторожны, так как это заменит существующий источник на текущий, независимо от того, что там.

...