Простая перебазировка всей ветки git правильным способом - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь перебросить всю ветку обратно на мастер. Мастер прошел мой первый коммит ветки несколькими новыми коммитами. В настоящее время я использую git reset HEAD~<X> для создания 1 коммита из всей ветки, я удаляю ветку из ветки, затем фиксирую ее в отдельной временной ветке / спрятываю ее, а затем перебазирую ее поверх master. Есть ли лучший способ?

1 Ответ

0 голосов
/ 25 апреля 2019

У вас есть следующие варианты.Исходя из вашего вопроса, я думаю, что, возможно, вам нужна опция Merge + squash в master , так как это приведет к новой фиксации на master, содержащей все изменения, которые вы сделали в feature ветке, иКажется, это то, чего вы хотите достичь, но я объясню и другие варианты, на тот случай, если вы предпочитаете другой подход.

Объединение feature ответвление в master

git checkout master
git merge feature

Объединение feature ветвь в master после включения master ветвь меняется в feature ветвь

git checkout feature
git merge master
# Resolve merge conflicts if needed & git commit
git push
git checkout master
git merge feature
# Conflicts are not possible here, 
# since they would have been already resolved in previous merge
git push

Слияние + сквош feature ветвь в master.

Это создает новыйкоммит на master, содержащий все изменения, которые вы вносите из ветки feature.Недостаток: feature коммиты ветви не содержатся в master ветке.

git checkout master
git merge --squash feature
git commit
git push

Перебазировать всю ветку feature на master

Недостатки:

  1. Все коммиты ветки feature переписываются поверх главной ветки.Поэтому коммиты ветки feature не будут отображаться как содержащиеся в ветке master после перебазирования.
  2. В конечном итоге вам придется разрешать слияние конфликтов более одного раза в разных коммитах.
  3. Вы теряете историю, и вы увидите все коммиты ветки feature в одну строку

Итак, рассмотрим один из приведенных выше вариантов.

git co master
git rebase feature
git push

Squash feature ветвь и затем объединение ее в master.

Недостаток: вам нужно переписать историю удаленных, если ваша ветвь feature уже передана на удаленную.Это обычно не рекомендуется.Подробнее см. https://stackoverflow.com/a/55824162/6939011

...