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

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

git merge --squash mybranch

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


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


Ответы (1)


Я думаю, что "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, платное дополнение, и нажмите большую кнопку "Сквош", которая помещает запросы на включение. Он делает то же самое, за исключением того, что конкатенируются только сообщения фиксации без слияния.

введите описание изображения здесь

person G. Sylvie Davies    schedule 27.12.2016
comment
Я обычно не использую git merge --squash, но только что протестировал его в Git 2.10.1, и там он работает так же. - person torek; 27.12.2016
comment
Вариант --no-edit был тем, что я искал. К сожалению, эта опция недоступна из фиксации в SourceTree, поэтому ее необходимо сделать в командной строке. Когда это делается из командной строки, нет ли возможности редактировать объединенные комментарии перед фиксацией? Ах, я попробовал TortoiseGit, и его коммит по умолчанию объединяет все комментарии и позволяет их редактировать перед фиксацией результата. Я использую Git 2.10.1.windows.1 - person JonN; 27.12.2016
comment
Попробуйте опустить --no-edit. Я уверен, что git commit предварительно заполнит ваш редактор тем же содержимым. Но если вы предпочитаете использовать --no-edit, вы всегда можете использовать git commit --amend для последующей корректировки сообщения коммита. - person G. Sylvie Davies; 28.12.2016
comment
Кроме того, вы установили свой редактор git? (например, вывод этого: git config --global --get core.editor). - person G. Sylvie Davies; 28.12.2016