Git add e commit em um comando

392

Existe alguma maneira de fazer

git add -A
git commit -m "commit message"

em um comando?

Parece que estou fazendo muito esses dois comandos, e se o Git tivesse uma opção git commit -Am "commit message", isso tornaria a vida muito mais conveniente.

git committem o -amodificador, mas não faz o mesmo que git add -Aantes de confirmar. git add -Aadiciona arquivos recém-criados, mas git commit -amnão. O que?

Chetan
fonte
4
possível duplicata de git commit todos os arquivos usando único cmd
Mr_and_Mrs_D
11
economizando tempo e comprometer toda mudança é melhor, então eu estou usando git commit -am"yes the code in committed"
Rizo
git add .é uma opção mais rápida para adicionar toda
Ryan

Respostas:

419

Você pode usar aliases de git, por exemplo

git config --global alias.add-commit '!git add -A && git commit'

e use-o com

git add-commit -m 'My commit message'

EDIT: Revertido para ticks ('), caso contrário, falhará na expansão do shell no Linux. No Windows , deve-se usar aspas duplas (") (apontadas nos comentários, não verificadas).

Martin C.
fonte
24
Use git config --global --unset alias.<your_alias>para desmarcar o alias.
TMOTTM
11
@MrFusion Torna o comando um comando shell externo em vez de um atalho para o comando git interno, ou seja, fazendo com que toda a linha seja executada como um processo separado.
Martin C.
8
Eu prefiro git config --global alias.add-commit '!git add -A && git commit -m'que não precise digitar -mtodas as vezes.
Incandescentman
21
Estou com preguiça de digitar 'add-commit' e '-m' sempre. Consequentemente, eu digito: git config --global alias.ac '!git add -A && git commit -m' uma vez e cada vez que eu basta digitar: git ac 'comment' :)
Navid Vafaei
5
git config --global alias.add-commit "!git add -A && git commit"(ou seja, aspas duplas em vez de aspas simples) é o que funciona no Windows.
Saheed
269
git commit -am "message"

é uma maneira fácil de dizer ao git para excluir arquivos que você excluiu, mas geralmente não recomendo esses fluxos de trabalho abrangentes. As confirmações do Git devem, na prática, ser bastante atômicas e afetar apenas alguns arquivos.

git add .
git commit -m "message"

é uma maneira fácil de adicionar todos os arquivos novos ou modificados. Além disso, a qualificação geral se aplica. Os comandos acima não excluirão os arquivos excluídos sem o git rmcomando.

git add app
git commit -m "message"

é uma maneira fácil de adicionar todos os arquivos ao índice de um único diretório, nesse caso, o appdiretório

Jed Schneider
fonte
41
ou apenas git commit -am "message"- apenas verifique se não há novos arquivos que o git ainda não pegou. caso contrário, você precisará usar git add . &&na frente disso ... para fazê-lo em uma linha.
Tribunais6
2
Desculpe, mas a pergunta original era exatamente sobre isso - evitando git add .em arquivos de casos foram adicionados
Gorn
50

Para mantê-lo em uma linha, use:

git add . && git commit -am "comment"

Esta linha irá adicionar e confirmar todos os arquivos alterados e adicionados ao repositório.

Ales
fonte
12
Deve-se notar que isso é específico para um shell do Linux (bash e possivelmente outros).
R. Martinho Fernandes
6
git commit -am "comment"é perfeito
Abhishek Bedi
2
Se você usou: git add . Então você não precisa usar a opção -a , apenas precisa:git commit -m "comment"
Duc Chi
18

Basta combinar seus comandos:

git add -A && git commit -m "comment" 
Yarin
fonte
18

Apenas adaptando a resposta de Ales e o comentário de courtimas para linux bash :

Para mantê-lo em uma linha, use:

git commit -am "comment"

Esta linha adicionará e confirmará todas as alterações no repositório.

Apenas verifique se não há novos arquivos que o git ainda não pegou. caso contrário, você precisará usar:

git add . ; git commit -am "message"

danilo
fonte
Como fazer git commit -am "comment", mas apenas para 1 arquivo? Digamos file.txt .
Santosh Kumar
git commit -am "comment"é um atalho para adicionar e confirmar todos os arquivos alterados. Se você deseja adicionar e cometer apenas 1 arquivo que você vai precisar para executar:git add file.txt ; git commit -m "comment"
danilo
No segundo caso, não há necessidade de adicionar -a com m. Deve ser git add. ; Git commit -m "mensagem"
Manish Bansal
12

Na versão posterior do git, você pode adicionar e confirmar assim

git commit -a -m "commit message"

Além disso, você tem um alias:

[alias]
    ac = commit -a -m

Então você pode usá-lo assim:

git ac "commit message"
sirwinny
fonte
6
Este comando não confirmará os novos arquivos, apenas os atualizados.
Ruvim
11

Na minha máquina Windows, configurei esse .bashrcalias para tornar todo o processo mais simples.

  • crie / localize seu .bashrc- consulte thread de SO
  • adicione a seguinte linha ao arquivo

    alias gacp='echo "enter commit message : " && read MSG && git add . && git commit -m "$MSG" && git push'
    

    Git adiciona commit e push. ajustá-lo de qualquer maneira, diga que não deseja que o comando push remova essa parte

  • recarregar .bashrc/ fechar e reabrir seu shell

  • agora você pode fazer todo o processo com o gacpcomando
Sojan V Jose
fonte
FYI esse script tem um git pushnele. Não copie e cole isso.
Yar
11

Certeza de que você pode usar:

git commit -am "commit all the things"
Blair Anderson
fonte
11
Este comando é a maneira mais curta e provavelmente a maneira mais fácil de obter o resultado necessário. Teste no git versão 2.6.3.windows.1.
Ithar
5
Isso não confirmará os arquivos adicionados recentemente, apenas os "atualizados"!
user13107
11
CORRETO ele não vai começar a controlar os arquivos que são rastreadas-un
Blair Anderson
@BlairAnderson - Existe um comando para adicionar arquivos não rastreados também com adicionar e confirmar?
precisa saber é o seguinte
6

Se você digitar:

git config --global alias.a '!git add -A && git commit -m'

uma vez, você só precisará digitar

git a

toda vez:

git a 'your comment'
Navid Vafaei
fonte
4
essa deve ser a resposta principal, super fácil e inclui arquivos não rastreados, ao contrário da maioria das outras sugestões.
JesseBoyd
6

Apenas use:

git commit -m "message" .     

Observe o "." no final ... que também pode ser um caminho para um arquivo / diretório

Josh Olson
fonte
isso funcionará para arquivos recém-criados ou apenas para os existentes que foram alterados?
precisa saber é o seguinte
5

Eu faço uma concha

#!/bin/sh

clear

git add -A 
git commit -a -m "'$*'"

salve, por exemplo, git.sh e depois chame:

sh git.sh your commit message
ademar111190
fonte
11
não é portátil para outros sistemas operacionais, e o git pode fazer isso sozinho, então qual é o objetivo?
naught101
2
@ naught101 é óbvio que o git pode fazer isso sozinho, o ponto é que esse shell serve para otimizar o processo para as pessoas que usam o git no linux, sendo muito mais simples executar uma mensagem de confirmação sh do git.sh e não ser portátil não significa que funcionará corretamente.
ademar111190
5

Eu tenho essa função no meu .bash_profileou .profileou .zprofileou o que é adquirido nos shells de login:

function gac () {
  # Usage: gac [files] [message]
  # gac (git add commit) stages files specified by the first argument
  # and commits the changes with a message specified by the second argument.
  # Using quotes one can add multiple files at once: gac "file1 file2" "Message".
  git add $1 && git commit -m "$2"
}
Lenar Hoyt
fonte
3

Você pode usar -a

git commit -h

...
Commit contents options
    -a, -all    commit all changed files
...

git commit -a # It will add all files and also will open your default text editor.
Druta Ruslan
fonte
2

Espero que isso ajude alguém e fique à vontade para editar ou melhorar. Não sei ao certo qual é a maneira mais rápida, mas isso certamente simplifica meu processo de confirmação de código usando "ohmyzsh" no Git .

https://ohmyz.sh/

  • git add . é encurtado para ga .
  • git commit -m "message" é encurtado para gc -m "message"
  • git push é encurtado para gp

insira a descrição da imagem aqui

dhahn
fonte
1

Eu uso o seguinte (ambos estão em andamento, então tentarei lembrar de atualizar isso):

# Add All and Commit
  aac = !echo "Enter commit message:" && read MSG && echo "" && echo "Status before chagnes:" && echo "======================" && git status && echo "" && echo "Adding all..." && echo "=============" && git add . && echo "" && echo "Committing..." && echo "=============" && git commit -m \"$MSG\" && echo "" && echo "New status:" && echo "===========" && git status

# Add All and Commit with bumpted Version number
  aacv = !echo "Status before chagnes:" && echo "======================" && git status && echo "" && echo "Adding all..." && echo "=============" && git add . && echo "" && echo "Committing..." && echo "=============" && git commit -m \"Bumped to version $(head -n 1 VERSION)\" && echo "" && echo "New status:" && echo "===========" && git status

Com o echo "Enter commit message:" && read MSG parte inspirada em Sojan V Jose

Eu adoraria ter uma if elsedeclaração lá para que o AACV me pergunte se eu quero implantar quando estiver pronto e faça isso por mim se eu digitar 'y', mas acho que devo colocar isso no meu .zshrcarquivo

avjaarsveld
fonte
1

Eu uso o seguinte alias para adicionar tudo e confirmar :

git config --global alias.ac '!git add -A && git commit -a'

Então, digitando:

git ac

Recebo uma janela do vim para obter mais ferramentas de edição para a minha mensagem de confirmação.

Gus
fonte
Eu deveria processá-lo por plágio. :)
Navid Vafaei
Explique os diferentes insights adicionais que sua resposta fornece quando comparado à resposta notavelmente mais antiga da Navid.
Yunnosch
@Yunnosch Acho que não vi a resposta de Navid antes de postar, pois ele é "muito preguiçoso": P para publicá-la como resposta completa. Na verdade, é a mesma coisa, e na verdade eu tenho esse apelido desde muito tempo atrás, emprestado de um colega de trabalho. Então, acho que podemos chamar isso: cadeia de plágio. Desculpe se isso te incomodou.
Gus
1

Caso alguém queira "adicionar e confirmar" para um único arquivo, como foi o meu caso, criei o script abaixo para fazer exatamente isso:

#!/bin/bash

function usage {
    echo "Usage: $(basename $0) <filename> <commit_message>"    
}

function die {
    declare MSG="$@"
    echo -e "$0: Error: $MSG">&2
    exit 1
}

(( "$#" == 2 )) || die "Wrong arguments.\n\n$(usage)"

FILE=$1
COMMIT_MESSAGE=$2

[ -f $FILE ] || die "File $FILE does not exist"

echo -n adding $FILE to git...
git add $FILE || die "git add $FILE has failed."
echo done

echo "commiting $file to git..."
git commit -m "$COMMIT_MESSAGE" || die "git commit has failed."

exit 0

Chamei-o de "gitfile.sh" e o adicionei ao meu $ PATH. Então eu posso executar o git add e commit para um único arquivo em um comando:

gitfile.sh /path/to/file "MY COMMIT MESSAGE"
Bruno Negrão Zica
fonte
0

Eu uso esse alias do git:

git config --global alias.cam '!git commit -a -m '

Então, em vez de ligar

git add -A && git commit -m "this is a great commit"

Eu só faço:

git cam "this is a great commit"

Alejandro Silva
fonte
0

você pode usar git commit -am "[comment]" // melhor solução ou git add. && git commit -m "[comentário]"

Gaurav Rathi
fonte
0

Verifique primeiro quais aliases você tem ...

git config --get-regexp alias

Se não estiver lá, você pode criar o seu próprio (referência: https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases )

// git add

git config --global alias.a '!git add -A'

// git commit

git config --global alias.c '!git commit'

// git commit -m

git config --global alias.cm '!git commit -m'

// git add commit

git config --global alias.ac '!git add -A && git commit'

// git add commit -m

git config --global alias.acm '!git add -A && git commit -m'

Por exemplo, se você usar o último ...

git acm 'My commit'
Cruz Jurado
fonte
0
  1. Crie um alias no bash: alias gac="git add -A && git commit -m"

    (Optei por chamar o atalho 'gac', mas você não precisa)

  2. Use-o: gac 'your commit message here'

H. Almidan
fonte
0

Para as costas prateadas na multidão que estão acostumadas a coisas como o Subversion ... fazer um "commit" no antigo sentido da palavra (isto é - ou no git speak - para adicionar, confirmar e pressionar) em um passo único Eu geralmente adiciono algo como o seguinte na raiz do meu projeto (como um arquivo bat no Windows, por exemplo, git-commit.bat). Então, quando eu quero adicionar, confirmar e pressionar, eu apenas digito algo comogit-commit "Added some new stuff" e tudo vai para o repositório remoto.

Além disso, dessa forma, qualquer pessoa no projeto pode usar o mesmo sem precisar alterar nada localmente.

Normalmente eu também corro git config credential.helper storeuma vez, então não preciso dar uid / pwd quando isso for executado.

::
:: add, commit, and push to git
::

@echo off
echo.
echo.
echo 
echo Doing commit...
git add -A && git commit -m %1
echo.
echo.
echo Doing push...
git push
echo.
echo.
echo Done.
echo.
John
fonte
0

Isso funciona para mim sempre, por favor, execute os seguintes comandos:

1.git add .
2.git commit -m "no bugs please"
3.git push origin *

onde * é baseado no ramo para o qual você está empurrando e também as mensagens de confirmação sempre podem ser alteradas para se adequar ao contexto.

Fredrick Okereke
fonte
-1
  1. digite git add . && git commit -ame digite
  2. digite historye digite
  3. lembre-se do número do comando acima, diga que o número é 543
  4. A partir de agora, para cada tipo de confirmação, !543 "your comment here"ou seja, marca exclamadora + número e um espaço e seu comentário.
Kosmos Nagios
fonte
4
Fiz uma votação baixa porque essa é uma solução realmente estranha que pode quebrar as coisas de maneira horrível quando o histórico expirar e o 543º comando se tornar outra coisa.
Bfontaine
-2

Este resultado - tente o seguinte: Comando simples de script um para git add, git commit e git push

Abra seu CMD no Windows e cole esta resposta

git commit -m "your message" . && git push origin master

Este exemplo é a captura de tela da minha imagem: https://i.stack.imgur.com/2IZDe.jpg

Anang Hanafi
fonte
-4

Para mantê-lo em uma linha, use:

gacm "your comment"
Ravula Sathish
fonte
2
Você poderia dar alguma informação sobre isso ou um link ou algo assim?
Gershom
7
Eu acho que este pôster está trabalhando com pseudônimos e não percebe isso. Para fazer o trabalho acima, você gostaria de adicionar um apelido de shell como alias gacm="git add .; git commit -m"(ou de preferência eu acho) um apelido de git git config --global alias.gacm '!git add .;git commit -m'.
Mere Development