Respostas:
Raramente há um bom motivo para fazer isso, mas o parâmetro é --allow-emptypara confirmações vazias (nenhum arquivo foi alterado), ao contrário --allow-empty-messagedas mensagens de confirmação vazias. Você também pode ler mais digitando git help commitou visitando a documentação online .
Enquanto o objeto da árvore (que possui um hash próprio) será idêntico, o commit terá um hash diferente, pois provavelmente terá um carimbo de data e hora e mensagem diferentes e definitivamente terá um commit pai diferente. Todos esses três fatores são integrados ao gitalgoritmo de hash do objeto.
Não são algumas razões que você pode querer um vazio commit (incorporando alguns dos comentários):
gitcomandos sem gerar alterações arbitrárias (via Vaelus ).gitolite(via Tatsh ).Outras estratégias para adicionar metadados a uma árvore de consolidação incluem:
git notes para associar uma nota mutável em cima de uma confirmação imutável existente.commit --amendse o controle remoto não permitir o envio forçado. Dessa forma, você pode permitir que os desenvolvedores vejam uma mensagem importante que acompanha o commit anterior.
Se você estiver usando um sistema como o gitversion, faz muito sentido fazer esse tipo de confirmação. Você pode ter um commit específico para aumentar a versão principal usando um comentário + semver: major.
Talvez como uma alternativa mais sensata, você possa criar uma tag anotada (uma confirmação nomeada com uma mensagem). Veja a git tag -aopção
devformulário de ramificaçãomastere, em seguidafeat, imediatamente uma ramificaçãodev, afeatramificação parece vir damasterramificação, pois não há confirmação distinta nadevramificação da qual afeatramificação vem. Uma confirmação vazia quando vocêdevcria adevramificação pela primeira vez ajuda a estabelecer a ramificação como sua ramificação indefinidamente duradoura e independentemaster. Geralmente é útil quando você usa ramificações como camadas e cria duas camadas a partir de uma única confirmação.