Enviando confirmações vazias para o controle remoto


242

Enviei uma confirmação para remota, mas agora percebi que a mensagem de confirmação não está correta. Gostaria de alterar a mensagem de confirmação, mas o AFAIK não é possível. Então eu decidi criar commit vazio com a mensagem correta:

git commit --allow-empty

Existem desvantagens / consequências de enviar confirmações vazias? Existe algum problema que eu possa enfrentar no futuro por causa desse commit vazio?


1
Verifique esta pergunta semelhante stackoverflow.com/questions/6218199/…
— Montaro

Respostas:


80

Você não enfrentará nenhuma consequência terrível, apenas a história parecerá meio confusa.

Você pode alterar a mensagem de confirmação fazendo

git commit --amend
git push --force-with-lease # (as opposed to --force, it doesn't overwrite others' work)

MAS isso substituirá a história remota pela sua, o que significa que, se alguém fizer esse repo nesse meio tempo, essa pessoa ficará muito brava com você ...

Faça isso apenas se você for a única pessoa acessando o repositório.


5
Sim, é por isso que eu preferi empurrar o commit vazio
— mrutyunjay 22/11/2013

4
@mrutyunjay se houver a chance de outras pessoas fazerem o repo, então sim, acho que é uma opção melhor.
— precisa

1
Você não enfrentará nenhuma consequência terrível, apenas a história parecerá meio confusa - que conseqüência terrível! ;-)
— Alois Mahdal

3
Prefira --force-with-leaseevitar perder o trabalho dos colaboradores.
— Kenzo

22

push commits, vazios ou não, faz com que eventuais ganchos git sejam acionados. Isso pode não fazer nada ou ter consequências devastadoras para o mundo.


9
Esta é uma observação subestimada. Sim, as confirmações vazias podem ser superiores às alterações confirmadas por push, mas não se pode presumir que são livres de efeitos colaterais, se houver ganchos.
— wintermute92

18

Existe alguma desvantagem / consequência de enviar confirmações vazias?

Além da extrema confusão que alguém pode ter sobre o porquê de haver muitos commits sem conteúdo neles no master, na verdade não.

Você pode alterar a confirmação enviada por push para o controle remoto, mas o sha1 da confirmação (basicamente é o número de identificação) será alterado permanentemente, o que altera a árvore de origem - você precisaria git push -fvoltar ao controle remoto.


15

Contanto que você faça referência clara à outra confirmação a partir da confirmação vazia, tudo ficará bem. Algo como:

Commit message errata for [commit sha1]

[new commit message]

Como outros já apontaram, geralmente é preferível forçar o envio de um commit corrigido.


12
 $ git commit --allow-empty -m "Trigger Build"

2
Embora esse código possa resolver a questão, incluir uma explicação de como e por que isso resolve o problema realmente ajudaria a melhorar a qualidade da sua postagem e provavelmente resultaria em mais votos positivos. Lembre-se de que você está respondendo à pergunta dos leitores no futuro, não apenas à pessoa que está perguntando agora. Por favor edite sua resposta para adicionar explicações e dar uma indicação do que limitações e premissas se aplicam. Da avaliação
— double-beep

-1

Que tal isso?

 git commit --allow-empty-message -m ''

Você simplesmente removeu a mensagem e isso torna ainda pior se um commit estiver vazio, pelo menos deve haver uma mensagem do motivo.
— Eric Bishard
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.