git: merge —squash

Чтобы при объединении веток получить только один коммит из вливаемой ветки, а не всю историю, нужно использовать параметр --squash:

git merge --squash branch -m "super commit"

Ссылки:

UPD: Как показала практика, с master’ом так лучше не делать, т.к. в этом случае другие ветки сообщают примерно следующее:

# Your branch and 'origin/master' have diverged,
# and have 336 and 1 different commit(s) each, respectively.

Т. е. пути вашей ветки и мастера разошлись. Учитывая, что в большинстве случаев разрабатываемые ветки в итоге вливаются обратно в master, это может привести к неприятным последствиям. К каким точно — не знаю, но для себя решил не использовать опцию --squash.

git: merge —squash: 4 комментария

  1. >>> Как показала практика, с master’ом так лучше не делать

    Имеется ввиду вливание мастера в другую ветку с флагом —squash ?

    1. Нет, я вливал devel в master. Изначально хотелось, чтобы каждый коммит в master был релизом. Но оказалось, что лучше просто мёржить, а релизные коммиты помечать тегом.


      1. git checkout master
        git merge --no-ff devel

        И будет Вам счастье! Это сделает вид ветки master похожим на то, чего Вы хотите: ветка будет содержать только релизные комиты.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *