Представьте, что вы работаете только с внешней линией, и в настоящее время происходят серьезные изменения, и пройдет 2 месяца, прежде чем эти изменения будут завершены и протестированы для выпуска. Теперь, через 3 недели после этого процесса, в последнем основном выпуске программного обеспечения обнаружена критическая ошибка. Для исправления этой ошибки необходимо внести незначительное изменение, а незначительное изменение должно основываться на коде, который создал последний основной выпуск. Однако все, что у вас есть, - это магистраль, в которой есть серьезные непроверенные изменения. Лучшее, что вы можете сделать, - это использовать дату / время или теги, чтобы вернуться назад и попытаться создать копию исходного кода, который использовался для последнего основного выпуска.
Если бы вы вместо этого создали ветку, прежде чем работать над новыми функциями / изменениями для двухмесячного цикла выпуска, тогда ствол был бы нетронутым, и вы могли бы легко использовать ствол или ответвление от ствола для реализации критической исправление ошибки и выпуск. Кроме того, когда вы объединяете основные изменения обратно в ствол, из различий станет ясно, что исправление незначительной ошибки было реализовано, и вы также можете убедиться, что оно интегрировано. Таким образом, гарантируется, что исправление критической ошибки «вне канала» не будет отменено выпуском следующей основной версии.