Несколько человек делают push в мастер ветку. Я допустим работаю со своей веткой, делаю несколько пушей, видна история изменения. А когда я решу отправить всё это в мастер, то в мастер отправится вся моя ветка со всеми изменениями? Или только последняя версия без истории изменений?
Заводите свою ветку. персональную, на локальной тачке.
Делаете в ней что хотите.
Фича закончена, и вы не хотите светить историю своих коммитов (да и не нужны они часто в мастере).
Переключаетесь на мастер.
Делаете мерж со сквешем
git merge --squash my-branch
Все ваши изменени переползают в локальный мастер, но не фиксируются.
Теперь делайте один-единственный коммит в мастер и пушите его в общий репозиторий.
Вот представьте ситуацию, вы взяли из кастрюли и налили в тарелку суп. (сделали checkout)
Потом взяли и поперчили суп. (сделали коммит)
После залили его майонезом (сделали коммит)
Далее положили туда пару ложек гвоздей (сделали коммит)
А затем положили лавровый лист (сделали коммит)
И потом вылили обратно в кастрюлю с супом (сделали пуш в мастер)
В итоге суп у нас получился не только с лавровым листом, а ещё и с майонезом, перцем и с гвоздями))
hsadik, Не только все изменения, но и история этих изменений, так как вашу ветку может вести сколько угодно разработчиков(всей семьёй в тарелку кидали приправы).
hsadik, если сливать Pull Request методом squash and merge, то останется только один коммит с финальным состояние супа. Информация о том, кто посолил, а кто поперчил, будет утеряна.