Хорошо, я думал, что это был простой сценарий мерзавца, что я пропускаю?
У меня есть master ветвь и ветвь feature. Я делаю некоторую работу над master, некоторые - над feature, а затем еще немного над master. Я получаю что-то вроде этого (лексикографический порядок подразумевает порядок коммитов):
A--B--C------F--G (master)
\
D--E (feature)
У меня нет проблем ни с git push origin master чтобы поддерживать удаленный master обновленным, ни с git push origin feature (когда она feature), чтобы поддерживать удаленное резервное копирование для работы моей feature. До сих пор у нас все хорошо.
Но теперь я хочу, чтобы перебазировать feature на вершине F--G совершающий на мастере, так что я git checkout feature и git rebase master. Все еще хорош. Теперь у нас есть:
A--B--C------F--G (master)
\
D'--E' (feature)
Проблема: в момент, когда я хочу сделать резервную копию новой перебазированной feature разветвленной с git push origin feature, push отклоняется, так как дерево изменилось из-за перебазировки. Эту проблему можно решить только с git push --force origin feature.
Я ненавижу использовать --force не будучи уверенным, что мне это нужно. Так мне это нужно? Обязательно ли перебазировка подразумевает, что следующий push должен быть --force?
Эта ветвь функций не используется другими разработчиками, поэтому де-факто у меня нет проблем с принудительным нажатием, я не собираюсь терять какие-либо данные, вопрос более концептуальный.