Недавно у меня была дискуссия с людьми, абсолютно не согласными со стратегией ребаз в ветвях функций GIT. Кажется, это приемлемый шаблон для использования rebase только для локальных, частных ветвей, но никогда не используйте его, когда над одной и той же функцией и ветвью работают несколько человек, согласно так называемому «Золотому правилу перебазирования» (как объяснено здесь: https : //www.atlassian.com/git/tutorials/merging-vs-rebasing/conceptual-overview )
Я просто удивлен, что есть консенсус по этому вопросу. Я работал 3 года с полной стратегией перебазирования, около 20 разработчиков работали вместе, и угадайте, что это сработало.
Процесс в основном:
- Вы создаете свою ветвь функций, давайте назовем ее «myfeature» и переместим ее в origin / myfeature
- Другие люди могут проверить это и работать над этим
- Иногда вы можете отменить его у мастера: из «myfeature», git rebase origin / master ; и тогда, да, вы должны подтолкнуть его.
- Что происходит, когда другие люди хотят подтолкнуть свои коммиты? Они просто перебазируют его: git rebase origin / myfeature . Таким образом, они теперь находятся в режиме ускоренной перемотки вперед и могут нажимать на них, не форсируя.
Единственный принцип уважения является то , что отрасль функции принадлежит кому - то . Владелец - единственный, кто может толкать насильно.
Итак, я признаю: как только появляется сила толчка, есть риск делать ошибки. Это правда. Но есть также много способов восстановления после ошибок, и действительно, за 3 года разработки я не видел много ошибок, требующих принудительного вмешательства, и когда это случалось, мы всегда находили способ исправить это правильно.
Итак, почему это «золотое правило ребазинга» так широко принято? Есть что-то еще, что я пропустил с этим? Я понимаю, что требуется минимум организации (каждая стратегия требует определенной организации), но это работает.