Электричество кончилось - разработка накрылась. Пожар - разработка накрылась. Не, не аргумент.
>Ну, stash — ноу комментс. Тебя попросили что-то поправить (если вместе с client side в одной ветке работаешь, а он что-то нашёл), ты переключаешься и правишь.
PhpStorm -> shelve changes
>cherry-pick — банально если понимаешь, что какое-то мелкое изменение (типа нового event'а) можно выкатить раньше, чем остальные изменения в бранчах; либо понимаешь, что в соседнем бранче нужно точно такое же изменение.
Ну выкатить раньше - это врядли, если нужно, то скорее всего задача была слишком глобальна, но в общем ничего не мешает смержить часть коммитов из ветки в транк - самое серьезное, что можно огребсти, это легко решаемый конфликт при последующем сливе ветки в транк.
А вот между ветками - да. Если много разработчиков, много веток. В реальности - у меня такой кейс был один раз за год. Запомнил именно потому, что svn не умеет ветки с одинаковыми изменениями нормально мержить между собой.
> rebase — ну, стоит, например, хук на cs. Хук не пропускает твой пуш, ты, я не знаю, использовал underscore вместо camelCase. Чтобы в итоге в history не видеть твой бесполезный commit «fix cs», ты делаешь git commit --amend, то есть частный случай rebase'а, потом пушишь. Объединения нескольких коммитов в один, подтаскивание изменений из master'а без merge commit в history и т.д. На github'е при оформлении PR очень полезная хрень, никому нахрен неинтересны твои мержи, там нужно ребейзить.
Ну вот сами обозначили основной случай. Ну более чистое history - дело полезное, но не критичное, особо при внутренней разработке, где никого особо не волнуют коммиты внутри ветке - волнует окончательный diff с транком для код-ревью.
>Локальные бранчи — ну, хочу запилить proof-of-concept, знать об этом никому необязательно. Могу это делать где угодно, не парясь, что нет доступа к центральной репе.
Доступа не может не быть, все в офисе.