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