Как сквош / ребаз в один выстрел - PullRequest
0 голосов
/ 21 февраля 2019

Как я могу с минимальными усилиями раздавить все мои коммиты (даже с слияниями и разрешениями конфликтов) до одного в ветви функций, а затем перебазировать поверх ветви, с которой я начал разработку? Не хочу возвращать разрешение конфликта, которое уже сделано .Сохраняйте минимум хлопот.

Предположим, что ветки, о которых мы говорим, являются master и featureX.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Звучит так, как будто вы хотите использовать сквош-слияния.

git checkout master
git merge --squash featureX
git commit

Это применяет все изменения к мастеру, как если бы вы слили (или перебазировали) FeatureX, как один коммит "без слияния".

Для этого есть несколько причин.Можно выполнить сдавливание и перебазирование за один шаг, просто выполнив интерактивную перебазировку, но (1) нет никакой реальной необходимости делать это, если вы собираетесь раздавить каждый промежуточный коммит - в этом случае объединение сквоша - это работающий ярлык;и (2) вы заметили, что в истории FeatureX, в которую вы сливаетесь, может происходить промежуточное ветвление и слияние;rebase не будет легко справляться с этим.

0 голосов
/ 21 февраля 2019

Самый простой способ, который я знаю, это

git checkout featureX
git merge -m "Bring latest changes from master" master
# magic starts here
git reset --soft master # put featureX branch pointer on top of master tip
# at this point all the changes related to featureX are on staging area
git commit -m "Feature X in a single shot"

Вот, пожалуйста.Без перебазирования, без раздавливания.

...