Пытаясь достичь git nirvana, я трачу день на изучение того, как использовать rebase для ситуаций, в которых я в настоящее время сливаюсь.
При прохождении того, что я считаю потоком git 101 (который я объясняю ниже), мне приходится это делать, push --force
когда я отправляю свои изменения обратно в источник.
Я не единственный - я знаю, что это закрытая территория (см. 1 , 2 , 3 , 4 , 5 ), и понимаю технические причины, по которым необходима сила. Моя проблема в том, что есть много (много) записей в блогах, восхваляющих rebase и то, как это изменило их жизнь (см. 1 , 2 , 3 , 4, чтобы перечислить несколько), но ни одна из них не упоминает, что push --force
является частью их поток. Однако почти каждый ответ на существующие вопросы о stackoverflow говорит что-то вроде «да, если вы собираетесь перебазировать, вы должны использовать push --force
».
Учитывая количество и религиозность сторонников перебазирования, я должен верить, что использование «push --force» не является неотъемлемой частью потока перебазирования, и что если кому-то часто приходится принудительно нажимать их, они делают что-то не так .
push --force
это плохо .
Итак, вот мой поток. Как я мог бы достичь тех же результатов без применения силы?
Простой пример
Две ветви:
- v1.0 - ветка релиза, содержит только патчи
- master - все для следующего крупного релиза.
У меня есть несколько коммитов патчей и несколько коммитов для следующего выпуска.
Я хотел бы включить патчи в свой мастер, чтобы они не потерялись для следующего выпуска. До просветления я бы просто:
git checkout master
git merge v1.0
Но теперь я пытаюсь
git checkout master
git rebase v1.0
Итак, теперь я здесь:
Время:
git push
Никаких кубиков.