Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Может ли Git merge --squash сохранить комментарии фиксации?

Автор вопроса: JonNОтветов: 1

Есть ли способ автоматически добавлять все комментарии коммита из раздавленных mybranch коммитов при выполнении

git merge --squash mybranch

чтобы один коммит содержал конкатенацию всех комментариев коммита из mybranch

  • Вы можете сначала раздавить в ветке функций, объединить или изменить порядок комментариев вручную во время интерактивной перебазировки, а затем объединить раздавленную ветвь. Сколько коммитов вы планируете раздавить? Tim Biegeleisen 27.12.2016

gitgit-merge

Ответы

Ответ 1 · рейтинг 12 · G. Sylvie Davies

Я думаю, что "git merge --squash" делает это автоматически! Просто сделайте коммит с помощью "git commit --no-edit", и я думаю, что вы получите именно это. Я вижу все сообщения фиксации внутри .git/SQUASH_MSG сразу после запуска команды "git merge --squash". Ты?

Лично я захожу в мастер, но затем принудительно отправляю результат обратно в мою ветку темы. Таким образом, мой окончательный коммит можно будет просмотреть с помощью запроса на включение.

Живой пример (попробуйте эти точные команды, это использует мой демонстрационный сервер и действительно работает):

git clone http://vm.bit-booster.com/bitbucket/scm/bb/rebase-example-2.git
cd rebase-example-2
git checkout branch
git reset --hard origin/master
git merge --squash origin/branch
git commit --no-edit

git show
commit 74656c51212526af49382c985419244737141217
Author: G. Sylvie Davies <[email protected]>
Date:   Mon Dec 26 22:07:50 2016 -0800

    Squashed commit of the following:

    commit 3120cbba4e94e0a81eed2f9ff42e7012cca996bf
    Author: G. Sylvie Davies <[email protected]>
    Date:   Thu Dec 15 18:24:02 2016 -0800

        b2

    commit ccb522334464879b8f39824031c997b57303475d
    Merge: 6b85efb 026bf0c
    Author: G. Sylvie Davies <[email protected]>
    Date:   Thu Dec 15 18:13:35 2016 -0800

        m

    commit 6b85efbddbb74d49a096bfc54fd4df15e261b72f
    Author: G. Sylvie Davies <[email protected]>
    Date:   Thu Dec 15 18:12:51 2016 -0800

        b1

На этом этапе я рекомендую выполнить "git push --force-with-lease", чтобы получить этот раздавленный коммит в вашей удаленной тематической ветке, готовой для проверки кода.

Примечание. В примере я делаю одну необычную вещь. На самом деле я захожу в источник/мастер, а не на локальный мастер, и сначала делаю "ветку git checkout" и "git reset --hard origin/master". Это держит моего местного хозяина невозмутимым из-за этой операции, так что все, над чем я там работаю, остается в покое.

Я на Git 2.7.4. Может быть, старые мерзавцы ведут себя по-другому, я не знаю.

Если вы хотите сделать все это в веб-интерфейсе и используете Atlassian Bitbucket Server (локальную версию), вы можете установить мой Bit-Booster, платное дополнение, и нажмите большую кнопку "Сквош", которая помещает запросы на включение. Он делает то же самое, за исключением того, что конкатенируются только сообщения фиксации без слияния.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы