Finalmente, git commit -a --allow-empty-message -m ''nem mesmo abre mais um editor. Veja minha resposta abaixo
VonC
2
No Windows este comando git commit -a --allow-empty-message -m ''marcas comprometer com comprometer mensagem " ''", por isso é melhor usar este comando em vez disso: git commit -a --allow-empty-message -m "".
tav
Respostas:
137
O git geralmente requer uma mensagem não vazia porque fornecer uma mensagem de confirmação significativa faz parte das boas práticas de desenvolvimento e da boa administração do repositório. A primeira linha da mensagem de confirmação é usada em todo lugar dentro do git; para mais informações, leia "Uma nota sobre mensagens de confirmação do Git" .
Se você abrir Terminal.app, cdpara o diretório do seu projeto e git commit -am '', verá que ele falha porque uma mensagem de confirmação vazia não é permitida. As versões mais recentes do git têm o --allow-empty-messageargumento da linha de comando, incluindo a versão do git incluída na versão mais recente do Xcode. Isso permitirá que você use este comando para fazer um commit com uma mensagem vazia:
git commit -a --allow-empty-message -m ''
Antes da --allow-empty-messagebandeira, você tinha que usar o commit-treecomando de encanamento. Você pode ver um exemplo de uso deste comando no capítulo "Raw Git" do livro Git .
As versões mais recentes do gitpossuem o --allow-empty-messageargumento de linha de comando. Veja a documentação aqui . Ele menciona que você costumava ser capaz de realizar a mesma coisa usando o comando encanamento git-commit-tree.
Jeremy W. Sherman
18
Eu acho que a frase "fornecer uma mensagem de commit significativa é parte de uma boa prática de desenvolvimento" é simplesmente errada - pode-se dizer que fornecer uma mensagem de commit significativa é considerada parte da boa prática de desenvolvimento, já que a declaração é divisiva de qualquer maneira - eu, por exemplo acredite que menos informação às vezes leva a menos confusão, especialmente porque o git obviamente armazena as mudanças reais no repositório, e git diffirá mostrar à parte interessada exatamente o que um commit contém, sem depender de descrições escritas por humanos. As máquinas devem nos poupar do trabalho sempre que possível.
amn
2
@amn, também comecei a me perguntar sobre todas aquelas dezenas de milhares de mensagens de commit bem escritas que escrevi e que nunca serão lidas por ninguém. Para mim agora, o valor desse hábito é que ele me obriga a olhar as mudanças na tentativa de descrevê-las, e isso às vezes me faz notar bugs. Você está certo, no entanto. Vou considerar prestar mais atenção ao código e menos à mensagem de confirmação.
osa
7
Git não é mais usado apenas para desenvolvimento de código. Quando estou atualizando uma página wiki do GitHub ou um documento Overleaf LaTeX, geralmente não há nada a dizer porque estou atualizando a documentação. Tudo semanticamente significativo sobre a mudança está contido no diff. Na verdade, eu me peguei usando o texto da mudança como a própria mensagem de confirmação: completamente redundante!
Jim Pivarski
1
@amn, às vezes a saída de git diffnão é autoexplicativa, mesmo quando o committer acredita que sim.
cowlinator
26
E se você adicionar um alias para ele, é ainda melhor, certo?
git config --global alias.nccommit 'commit -a --allow-empty-message -m ""'
Agora você acabou de fazer um nccommit, nc por causa de nenhum comentário, e tudo deve ser confirmado.
Se uma mensagem vazia for especificada com a opção -mde git commit, o editor será iniciado.
Isso é inesperado e desnecessário.
Em vez de usar o comprimento da string da mensagem para verificar se o usuário especificou uma, lembre-se diretamente se a opção -mfoi fornecida.
git 2.9 (junho de 2016) melhora o comportamento da mensagem vazia:
commit: não ignore uma mensagem vazia dada por -m ''
" git commit --amend -m '' --allow-empty-message", embora pareça estranho, é uma solicitação válida para alterar o commit para não ter nenhuma mensagem.
Devido à detecção incorreta da presença de -mna linha de comando, acabamos mantendo a mensagem de log do commit original.
" git commit -m "$msg" -F file" deve ser rejeitado seja $msguma string vazia ou não, mas devido ao mesmo bug, não foi rejeitado quando $msgestá vazio.
" git -c template=file -m "$msg"" deve ignorar o modelo mesmo quando $msgestá vazio, mas não o fez e, em vez disso, usou o conteúdo do arquivo de modelo.
Você não precisa do git para fazer isso. O uso criativo de uma função bash resolverá o problema. Se você não se importa com as mensagens, defina uma mensagem padrão e esqueça.
function gitcom() {
git commit -m "my default commit message"
}
Se você se sentir realmente aventureiro, pode adicionar, confirmar e enviar com um comando
Você poderia fornecer mais alguns detalhes sobre como configurar esta função bash?
adaam
1
Supondo que você esteja no OSX ou Linux, você pode copiar essas funções e colocá-las em seu .profile (deve estar em sua pasta de início, se não, crie-o). Abra uma nova janela de console e esses comandos estarão disponíveis para você. Quaisquer alterações feitas nesses arquivos exigirão que você atualize a sessão bash para que possa acelerar as coisas adicionando os seguintes aliases a esse arquivo: alias ea = "subl ~ / .profile" # subl é meu editor de texto, substitua pelo seu alias er = "source ~ / .profile" # isto irá zerar. Agora quando você quiser adicionar atalhos, basta digitar "ea" (editar aliases) E para atualizar er
Steven Garcia
2
Se você chama os scripts git-come git-zap(sem extensões) e colocou-os em algum lugar git pode encontrá-los (ou seja, em algum lugar no seu PATH), trata git-los como comandos regulares git e você pode chamá-los assim: git com,git zap origin master
Manuzor
1
no bash é function gitcom {ou gitcom() {TMK, consertar?
2
O Git requer um commit para ter um comentário, caso contrário, não aceitará o commit.
Você pode configurar um modelo padrão com git como sua mensagem de confirmação padrão ou pode procurar a sinalização --allow-empty-message em git. Acho (não tenho 100% de certeza) que você pode reconfigurar o git para aceitar mensagens de commit vazias (o que não é uma boa ideia). Normalmente, cada commit deve ser um pouco trabalhoso, que é descrito por sua mensagem.
Não sei por que essa resposta foi rejeitada. Eu concordo que forçar o Git a aceitar mensagens de commit vazias, ou usar uma mensagem como 'salvar', é uma má ideia. Pare de lutar e apenas aprenda a maldita ferramenta.
Jezen Thomas
2
Eu tenho a seguinte configuração em meu projeto privado:
git config alias.auto 'commit -a -m "changes made from [device name]"'
Assim, quando estou com pressa, faço
git auto
git push
E pelo menos eu sei de qual dispositivo o commit foi feito.
A mensagem de confirmação é uma prática recomendada que deve ser seguida em todos os momentos. A menos que você seja o único desenvolvedor e isso não vá mudar tão cedo.
isso é uma espécie de piada. Mas para pequenos commits que você TEM que fazer para enviar as alterações para o heroku (por exemplo), está tudo bem na única instância do desenvolvedor.
git commit -a --allow-empty-message -m ''
nem mesmo abre mais um editor. Veja minha resposta abaixogit commit -a --allow-empty-message -m ''
marcas comprometer com comprometer mensagem "''
", por isso é melhor usar este comando em vez disso:git commit -a --allow-empty-message -m ""
.Respostas:
O git geralmente requer uma mensagem não vazia porque fornecer uma mensagem de confirmação significativa faz parte das boas práticas de desenvolvimento e da boa administração do repositório. A primeira linha da mensagem de confirmação é usada em todo lugar dentro do git; para mais informações, leia "Uma nota sobre mensagens de confirmação do Git" .
Se você abrir Terminal.app,
cd
para o diretório do seu projeto egit commit -am ''
, verá que ele falha porque uma mensagem de confirmação vazia não é permitida. As versões mais recentes do git têm o--allow-empty-message
argumento da linha de comando, incluindo a versão do git incluída na versão mais recente do Xcode. Isso permitirá que você use este comando para fazer um commit com uma mensagem vazia:Antes da
--allow-empty-message
bandeira, você tinha que usar ocommit-tree
comando de encanamento. Você pode ver um exemplo de uso deste comando no capítulo "Raw Git" do livro Git .fonte
git
possuem o--allow-empty-message
argumento de linha de comando. Veja a documentação aqui . Ele menciona que você costumava ser capaz de realizar a mesma coisa usando o comando encanamentogit-commit-tree
.git diff
irá mostrar à parte interessada exatamente o que um commit contém, sem depender de descrições escritas por humanos. As máquinas devem nos poupar do trabalho sempre que possível.git diff
não é autoexplicativa, mesmo quando o committer acredita que sim.E se você adicionar um alias para ele, é ainda melhor, certo?
Agora você acabou de fazer um nccommit, nc por causa de nenhum comentário, e tudo deve ser confirmado.
fonte
Ao trabalhar em uma atualização de código importante, se você realmente precisa de um ponto seguro intermediário, pode apenas fazer:
ou mais curto:
fonte
diff
tudo isso.Observação: a partir de git1.8.3.2 (julho de 2013), o seguinte comando ( mencionado acima por Jeremy W Sherman ) não abrirá mais um editor:
Veja o commit 25206778aac776fc6cc4887653fdae476c7a9b5a :
git 2.9 (junho de 2016) melhora o comportamento da mensagem vazia:
Consulte o commit 178e814 (06 de abril de 2016) de Adam Dinwoodie (
me-and
) .Consulte o commit 27014cb (07 de abril de 2016) de Jeff King (
peff
) .(Fundido por Junio C Hamano -
gitster
- no commit 0709261 , 22 de abril de 2016)fonte
Você não precisa do git para fazer isso. O uso criativo de uma função bash resolverá o problema. Se você não se importa com as mensagens, defina uma mensagem padrão e esqueça.
Se você se sentir realmente aventureiro, pode adicionar, confirmar e enviar com um comando
Que você então executaria como
Você pode até ir mais fundo e usar parse_git_branch para evitar alguns pressionamentos de tecla lá, ou definir um padrão comum de "origem" e "mestre".
fonte
git-com
egit-zap
(sem extensões) e colocou-os em algum lugar git pode encontrá-los (ou seja, em algum lugar no seu PATH), trata git-los como comandos regulares git e você pode chamá-los assim:git com
,git zap origin master
function gitcom {
ougitcom() {
TMK, consertar?O Git requer um commit para ter um comentário, caso contrário, não aceitará o commit.
Você pode configurar um modelo padrão com git como sua mensagem de confirmação padrão ou pode procurar a sinalização --allow-empty-message em git. Acho (não tenho 100% de certeza) que você pode reconfigurar o git para aceitar mensagens de commit vazias (o que não é uma boa ideia). Normalmente, cada commit deve ser um pouco trabalhoso, que é descrito por sua mensagem.
fonte
Eu tenho a seguinte configuração em meu projeto privado:
Assim, quando estou com pressa, faço
E pelo menos eu sei de qual dispositivo o commit foi feito.
fonte
Encontrei a solução mais simples:
Isso é tudo, você vai trabalhar em torno do git commit message.
você pode até salvar esse pedido em uma festa ou outra coisa para torná-lo mais simples.
Os membros da nossa equipe sempre escrevem essas mensagens, mas quase ninguém as verá novamente.
Commit message é algo que mata o tempo, pelo menos em nossa equipe, então nós a ignoramos.
fonte
A mensagem de confirmação é uma prática recomendada que deve ser seguida em todos os momentos. A menos que você seja o único desenvolvedor e isso não vá mudar tão cedo.
fonte