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.