O frustrante é que isso costumava ser possível e era uma sintaxe padrão para confirmar e adicionar novos arquivos: git commit -a Mas, fiel à forma, a sintaxe do git mudou. Confundiu os usuários existentes (e quebrou seus scripts), eliminou a funcionalidade útil e substituiu um sinalizador desnecessário.
fijiaaron
1
Existe uma duplicata disso no git add -A, git commit em um comando? . A resposta aceita aqui é semelhante à resposta aceita aqui, mas sugere a criação de um alias do git para diminuir a digitação envolvida (e mostra como fazê-lo).
Atualize o índice não apenas onde a árvore de trabalho possui um arquivo correspondente, mas também onde o índice já possui uma entrada. Isso adiciona, modifica e remove entradas de índice para corresponder à árvore de trabalho.
Se não <pathspec>for fornecido quando a opção -A for usada, todos os arquivos em toda a árvore de trabalho serão atualizados (versões antigas do Git usadas para limitar a atualização ao diretório atual e seus subdiretórios).
@NarendraJaggi git add -A && git commit -m "Your Message"
Dr.jacky
1
pode-se colocar isso em seu próprio arquivo .sh ou .bat e apenas usá-lo como um comando. A mensagem pode ser param1
BlueWizard
E também é possível adicionar atalhos para comandos básicos do git no seu .bashrc: alias gpl = 'git pull' alias gps = 'git push' alias gc = 'git commit' alias gs = 'status do git' alias gd = 'git diff' alias ga = 'git add' alias gck = 'git checkout' alias gb = 'git branch' alias gl = 'git log' alias lcp = 'git format-patch -1 HEAD' alias resetToMaster = 'git reset - origem difícil / master '
ni3 3/04
3
No PowerShell, substitua "&&" por ";" para executar os dois comandos, assim:git add -A ; git commit -m "Your Message"
Rafael Miceli 11/11
415
Este comando adicionará e confirmará todos os arquivos modificados, mas não os arquivos recém-criados .
git commit -am "<commit message>"
No man git-commit:
-a, --all
Tell the command to automatically stage files that have been modified
and deleted, but new files you have not told Git about are not
affected.
Na verdade, isso não responde à pergunta, na verdade exclui especificamente (em negrito) uma das partes principais da solução procurada.
Arunas 31/08/2015
6
Não adiciona ou confirma arquivos não rastreados.
b15
3
Mas ele cobre a situação mais típica quando você confirma após "git add -A" e percebe que você esqueceu de alterar algo pequeno no código. Eu odeio a escrever a mesma mensagem de confirmação várias vezes a partir do zero
KorbenDallas
mas o iniciador de tópicos diz TODOS OS ARQUIVOS, portanto, acho que este não conta
Frederick G. Sandalo
E também é possível adicionar atalhos para comandos básicos do git no seu .bashrc: alias gpl = 'git pull' alias gps = 'git push' alias gc = 'git commit' alias gs = 'status do git' alias gd = 'git diff' alias ga = 'git add' alias gck = 'git checkout' alias gb = 'git branch' alias gl = 'git log' alias lcp = 'git format-patch -1 HEAD' alias resetToMaster = 'git reset - origem difícil / master '
ni3
26
Eu uso esta função:
gcaa() { git add --all && git commit -m "$*" }
No meu arquivo de configuração zsh, para que eu possa fazer:
> gcaa This is the commit message
Preparar e confirmar automaticamente todos os arquivos.
Após executar esse comando, você pode apenas digitar git temppara que o git confirme automaticamente todas as suas alterações no ramo atual como um commit chamado "Temp". Em seguida, você pode usar git reset HEAD~mais tarde para "descomprimir" as alterações para continuar trabalhando nelas, ou git commit --amendpara adicionar mais alterações ao commit e / ou dar um nome adequado.
Eu odiaria trabalhar com um repositório cheio de mensagens de confirmação dizendo "none" e rejeitaria qualquer PR nessa base também. Infelizmente, a única maneira de você aprender a importância de ter boas mensagens de confirmação é quando você precisa voltar para auditar algo escrito há muito tempo ("esta linha está causando um bug ... por que foi adicionada, e terá alguma coisa?" quebrar se eu mudar / remover? ").
gregmac
1
As confirmações com "none" nunca pretendem ficar por muito tempo. Normalmente inicio meu próprio ramo de recursos, faço micro commits e os esmago em algo mais razoável antes de uma mesclagem. Obviamente, as pessoas que confirmam para cada função modificada e não se importam com um log git completo não precisam disso.
SystematicFrank
1
Eu uso 'wip' (abreviação de "trabalho em andamento") em vez de 'none' para esse fim e eu apenas envio tais confirmações para meus ramos particulares.
Sergej Koščejev 11/01
Ainda é inútil, porque, eventualmente, aqueles "wip" ou "none" confirmam o processo em um ramo que outras pessoas veem e poluem o log de mensagens. Se você estiver esmagando todos os seus commits antes de pressionar, isso seria aceitável, mas de outra forma ainda será irritante para a equipe.
22416 Jordan
Essa é uma ideia interessante e, combinando-a com a próxima resposta, você pode obter a resposta 100% precisa para o OP. Na verdade, descrevi as etapas necessárias (usando o git-bash) na minha resposta. ( stackoverflow.com/a/43442269/869239 )
VeRo 16/04
3
Execute o comando fornecido
git add .&& git commit -m "Changes Committed"
No entanto, mesmo que pareça um único comando, são dois comandos separados, um por um. Aqui nós costumávamos &&combiná-los. Não é muito diferente de correr
git add .e git commit -m "Changes Committed"separadamente. Você pode executar vários comandos juntos, mas a sequência é importante aqui. Como se você quiser enviar as alterações para o servidor remoto juntamente com a preparação e a confirmação, poderá fazê-lo conforme o indicado,
Em vez disso, se você alterar a sequência e colocar o pushprimeiro, ele será executado primeiro e não fornecerá o push desejado após a preparação e confirmação apenas porque já foi executado primeiro.
&&executa o segundo comando na linha quando o primeiro comando retornar com sucesso ou com um nível de erro igual a 0. O oposto de &&é ||, que executa o segundo comando quando o primeiro comando não tiver êxito ou com um nível de erro igual a 1.
Como alternativa, você pode criar alise as git config --global alias.addcommit '!git add -a && git commit -m'e usá-lo comogit addcommit -m "Added and commited new files"
Você pode escrever um pequeno script (veja a resposta de Ian Clelland) chamado git-commitallque usa vários comandos git para executar o que você deseja fazer.
Coloque esse script em qualquer lugar do seu $PATH. Você pode chamá-lo por git commitall... muito útil!
Encontrado aqui (infelizmente, todas as perguntas e respostas foram excluídas, visíveis apenas com alta reputação)
Toda a linha é uma boa leitura ... é por isso que ligou-^^
tanascius
@ Dimitri - infelizmente algumas pessoas do estudo decidiram excluir esse tópico útil. Ainda é visível com grande reputação, por isso mantenho o link aqui.
Respostas:
Faz
contar como um "comando único"?
Edite com base na resposta de @ thefinnomenon abaixo :
Para tê-lo como
git alias
, use:e confirme todos os arquivos, incluindo novos arquivos, com uma mensagem com:
Explicação (da
git add
documentação ):fonte
git add -A ; git commit -m "Your Message"
Este comando adicionará e confirmará todos os arquivos modificados, mas não os arquivos recém-criados .
No man git-commit:
fonte
Eu uso esta função:
No meu arquivo de configuração zsh, para que eu possa fazer:
Preparar e confirmar automaticamente todos os arquivos.
fonte
function gcaa() { git add --all && git commit -m "$*" && git push }
gaa && gc -m "my commit"
mas isso é muito melhor ... <sai correndo para mudar o bashrc ..>Uma linha para preparar TODOS os arquivos ( modificados , excluídos e novos ) e confirmar com o comentário:
http://git-scm.com/docs/git-add
http://git-scm.com/docs/git-commit
fonte
Não sei por que essas respostas dançam em torno da solução que eu acredito ser a melhor, mas o que vale aqui é o que eu uso:
Crie um alias:
Adicione todos os arquivos e confirme com a mensagem:
NOTA:
coa
é abreviação de comprometer tudo e pode ser substituído por qualquer coisa que seu coração desejarfonte
git alias
caminho, o resto é chato.A confirmação no git pode ser um processo de várias etapas ou uma etapa, dependendo da situação.
Essa situação é onde você tem vários arquivos atualizados e deseja confirmar:
Você precisa adicionar todos os arquivos modificados antes de confirmar qualquer coisa.
ou
Depois disso, você pode usar confirmar todos os arquivos adicionados
com isso, você deve adicionar a mensagem para esse commit.
fonte
Se você quiser apenas uma maneira "rápida e suja" de ocultar alterações na ramificação atual, use o seguinte alias:
Após executar esse comando, você pode apenas digitar
git temp
para que o git confirme automaticamente todas as suas alterações no ramo atual como um commit chamado "Temp". Em seguida, você pode usargit reset HEAD~
mais tarde para "descomprimir" as alterações para continuar trabalhando nelas, ougit commit --amend
para adicionar mais alterações ao commit e / ou dar um nome adequado.fonte
Eu tenho na minha configuração dois aliases:
se eu sou muito preguiçoso, apenas cometo todas as alterações com
e apenas para fazer um commit rápido
coa significa "comprometer tudo"
fonte
Execute o comando fornecido
No entanto, mesmo que pareça um único comando, são dois comandos separados, um por um. Aqui nós costumávamos
&&
combiná-los. Não é muito diferente de corrergit add .
egit commit -m "Changes Committed"
separadamente. Você pode executar vários comandos juntos, mas a sequência é importante aqui. Como se você quiser enviar as alterações para o servidor remoto juntamente com a preparação e a confirmação, poderá fazê-lo conforme o indicado,Em vez disso, se você alterar a sequência e colocar o
push
primeiro, ele será executado primeiro e não fornecerá o push desejado após a preparação e confirmação apenas porque já foi executado primeiro.&&
executa o segundo comando na linha quando o primeiro comando retornar com sucesso ou com um nível de erro igual a 0. O oposto de&&
é||
, que executa o segundo comando quando o primeiro comando não tiver êxito ou com um nível de erro igual a 1.Como alternativa, você pode criar alise as
git config --global alias.addcommit '!git add -a && git commit -m'
e usá-lo comogit addcommit -m "Added and commited new files"
fonte
Ótimas respostas, mas se você procurar uma linha de singe fazer tudo, poderá concatenar o alias e aproveitar a conveniência:
git add * && git commit -am "<commit message>"
É uma única linha, mas dois comandos, e, como mencionado, você pode alternar os seguintes comandos:
alias git-aac="git add * && git commit -am "
(o espaço no final é importante) porque você irá parametrizar o novo comando de mão curta.A partir deste momento, você estará usando este alias:
git-acc "<commit message>"
Você basicamente diz:
git, adicione para mim todos os arquivos não rastreados e confirme-os com esta mensagem de confirmação.
Espero que você use o Linux, espero que isso ajude.
fonte
Você pode escrever um pequeno script (veja a resposta de Ian Clelland) chamado
git-commitall
que usa vários comandos git para executar o que você deseja fazer.Coloque esse script em qualquer lugar do seu
$PATH
. Você pode chamá-lo porgit commitall
... muito útil!Encontrado aqui (infelizmente, todas as perguntas e respostas foram excluídas, visíveis apenas com alta reputação)
fonte
tente usar:
fonte