Suprime o modelo de mensagem de confirmação com 'git merge --squash' ou '--no-commit'

2

Ao usar git merge com uma opção que suprime a confirmação automática ( --no-commit ou --squash ), git aparentemente sempre gera seu próprio modelo para a próxima mensagem de confirmação; o próximo git commit ignora a opção -t . Existe alguma maneira de suprimir isso?

A melhor solução encontrada é usar -m com o commit e executar imediatamente git commit --amend . Isso parece estranho para mim, porém, e remove a capacidade de abortar o commit, excluindo o modelo de mensagem de confirmação antes de salvar.

    
por Kyle Strand 05.03.2015 / 02:01

1 resposta

3

Se você inspecionasse o conteúdo do diretório .git depois de fazer git merge --squash , veria o arquivo SQUASH_MSG que contém um modelo de mensagem de confirmação. Este arquivo também é criado depois de fazer um squash com git rebase -i . Você precisa remover este arquivo se não quiser que o Git preencha a mensagem de confirmação automaticamente ao fazer git commit . Se for útil alias um comando nativo git commit para fazer isso automaticamente para você, mas não é possível com o Git. Em vez disso, devemos criar um alias como este em ~/.gitconfig :

[alias]
         kommit = "!KOMIT_GIT_DIR=$(git rev-parse --git-dir); if [ -a "${KOMIT_GIT_DIR}/SQUASH_MSG" ] ; then rm "${KOMIT_GIT_DIR}/SQUASH_MSG" ; fi && git commit"

Esta linha verifica se o SQUASH_MSG existe e o remove, antes de executar git commit . Agora você deve fazer git komit em vez de git commit depois de executar git merge --squash .

Eu testei isso com o Git 2.3.1:

$ git --version
git version 2.3.1
    
por 05.03.2015 / 23:15

Tags