Git ajouter et valider en une seule commande

392

Puis-je faire quelque chose

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

en une seule commande?

Il me semble que je fais beaucoup ces deux commandes, et si Git avait une option comme git commit -Am "commit message"ça, cela rendrait la vie beaucoup plus pratique.

git commita le -amodificateur, mais il ne fait pas tout à fait la même chose git add -Aqu'avant la validation. git add -Aajoute des fichiers nouvellement créés, mais git commit -amne le fait pas. Que fait-il?

Chétan
la source
1
gagner du temps et valider chaque changement est meilleur, donc j'utilise git commit -am"yes the code in committed"
Rizo
git add .est une option plus rapide pour tout ajouter
Ryan

Réponses:

419

Vous pouvez utiliser des alias git, par exemple

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

et l'utiliser avec

git add-commit -m 'My commit message'

EDIT: Revenu à ticks ('), sinon il échouera pour l'expansion du shell sur Linux. Sous Windows , il faut plutôt utiliser des guillemets doubles (") (souligné dans les commentaires, n'a pas vérifié).

Martin C.
la source
24
Utilisez git config --global --unset alias.<your_alias>pour désactiver l'alias.
TMOTTM
11
@MrFusion Il fait de la commande une commande shell externe au lieu d'un raccourci vers la commande interne git, c'est-à-dire que la ligne entière est exécutée comme un processus séparé.
Martin C.
8
Je préfère git config --global alias.add-commit '!git add -A && git commit -m'donc je n'ai pas à taper à -mchaque fois.
incandescentman
21
Je suis trop paresseux pour taper 'add-commit' et '-m' à chaque fois. Par conséquent, je tape: git config --global alias.ac '!git add -A && git commit -m' une fois et chaque fois que je tape juste: git ac 'comment' :)
Navid Vafaei
5
git config --global alias.add-commit "!git add -A && git commit"(c'est-à-dire des guillemets doubles au lieu de guillemets simples) est ce qui fonctionne sous Windows.
Saheed
269
git commit -am "message"

est un moyen facile de dire à git de supprimer les fichiers que vous avez supprimés, mais je ne recommande généralement pas de tels workflows fourre-tout. Les commits Git devraient dans la meilleure pratique être assez atomiques et n'affecter que quelques fichiers.

git add .
git commit -m "message"

est un moyen simple d'ajouter tous les fichiers nouveaux ou modifiés. En outre, la qualification fourre-tout s'applique. Les commandes ci-dessus ne supprimeront pas les fichiers supprimés sans la git rmcommande.

git add app
git commit -m "message"

est un moyen simple d'ajouter tous les fichiers à l'index à partir d'un seul répertoire, dans ce cas le apprépertoire.

Jed Schneider
la source
41
ou tout simplement git commit -am "message"- assurez-vous qu'il n'y a pas de nouveaux fichiers que git n'a pas encore récupérés. sinon vous devrez utiliser git add . &&devant cela .... pour le faire en une seule ligne.
courtsimas
2
Désolé mais la question d'origine était exactement à ce sujet - à éviter git add .au cas où des fichiers auraient été ajoutés
gorn
50

Pour le conserver sur une seule ligne, utilisez:

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

Cette ligne va ajouter et valider tous les fichiers modifiés et ajoutés au référentiel.

Ales
la source
12
A noter que ceci est spécifique à un shell Linux (bash et éventuellement d'autres).
R. Martinho Fernandes
6
git commit -am "comment"est parfait
Abhishek Bedi
2
Si vous avez utilisé: git add . Ensuite, vous n'avez pas besoin d'utiliser l'option -a , il vous suffit de:git commit -m "comment"
Duc Chi
18

Combinez simplement vos commandes:

git add -A && git commit -m "comment" 
Yarin
la source
18

Adaptation de la réponse d'Ales et du commentaire de courtsimas pour Linux bash uniquement :

Pour le conserver sur une seule ligne, utilisez:

git commit -am "comment"

Cette ligne va ajouter et valider toutes les modifications apportées au référentiel.

Assurez-vous simplement qu'il n'y a pas de nouveaux fichiers que git n'a pas encore récupérés. sinon vous devrez utiliser:

git add . ; git commit -am "message"

danilo
la source
Comment faire git commit -am "comment", mais pour 1 seul fichier? Disons file.txt .
Santosh Kumar
git commit -am "comment"est un raccourci pour ajouter et valider tous les fichiers modifiés. Si vous souhaitez ajouter et valider un seul fichier, vous devrez exécuter:git add file.txt ; git commit -m "comment"
danilo
Dans le second cas, il n'est pas nécessaire d'ajouter -a avec m. Cela devrait être git add. ; Git commit -m "message"
Manish Bansal
12

Dans la dernière version de git, vous pouvez ajouter et valider comme ceci

git commit -a -m "commit message"

De plus, vous êtes un alias:

[alias]
    ac = commit -a -m

Ensuite, vous pouvez l'utiliser comme ceci:

git ac "commit message"
sirwinny
la source
6
Cette commande ne valide pas les nouveaux fichiers, uniquement ceux mis à jour.
ruvim
11

Sur ma machine Windows, j'ai configuré cet .bashrcalias pour simplifier l'ensemble du processus.

  • créer / localiser votre .bashrc- référencer le fil SO
  • ajoutez la ligne suivante au fichier

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

    il ajoute git commit et push. modifiez-le de quelque manière que ce soit, dites que vous ne voulez pas que la commande push supprime cette partie

  • recharger .bashrc/ fermer et rouvrir votre shell

  • vous pouvez maintenant faire tout le processus avec la gacpcommande.
Sojan V Jose
la source
Pour info ce script a un git pushdedans. Ne copiez et collez pas cela.
Yar
11

à peu près sûr que vous pouvez utiliser:

git commit -am "commit all the things"
Blair Anderson
la source
1
Cette commande est le moyen le plus court et probablement le plus simple pour obtenir le résultat souhaité. Test sur git version 2.6.3.windows.1.
Ithar
5
Cependant, cela n'engagera pas les fichiers nouvellement ajoutés, seuls ceux "mis à jour"!
user13107
1
CORRECT, il ne commencera pas le suivi des fichiers non suivis
Blair Anderson
@BlairAnderson - Existe-t-il une commande pour ajouter des fichiers non suivis également avec ajout et validation?
MasterJoe2
6

Si vous tapez:

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

une fois, il vous suffit de taper

git a

à chaque fois:

git a 'your comment'
Navid Vafaei
la source
4
cela devrait être la meilleure réponse, super facile et comprend des fichiers NON SUIVI contrairement à la plupart des autres suggestions.
JesseBoyd
6

Utilisez simplement:

git commit -m "message" .     

Remarquez le "." à la fin ... qui peut aussi être un chemin vers un fichier / répertoire

Josh Olson
la source
cela fonctionnera-t-il pour les fichiers nouvellement créés ou pour ceux qui sont déjà modifiés?
MasterJoe2
5

Je fais un coquillage

#!/bin/sh

clear

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

enregistrez par exemple git.sh et appelez plus tard:

sh git.sh your commit message
ademar111190
la source
1
pas portable sur d'autres OS, et git peut le faire lui-même, alors à quoi ça sert?
naught101
2
@ naught101 il est évident que git peut le faire par vous-même, le fait est que ce shell sert à rationaliser le processus pour les personnes utilisant git sur linux, étant beaucoup plus simple pour exécuter un sh git.sh votre message de validation, et ne pas être rendu portable ne signifie pas que cela fonctionnera correctement.
ademar111190
5

J'ai cette fonction dans mon .bash_profileou .profileou .zprofileou tout ce qui provient des shells de connexion:

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
la source
3

Vous pouvez utiliser -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
la source
2

J'espère que cela aide quelqu'un et n'hésitez pas à modifier ou à améliorer. Je ne sais pas quel est le moyen le plus rapide , mais cela simplifie certainement mon processus de validation de code en utilisant "ohmyzsh" pour Git .

https://ohmyz.sh/

  • git add . est raccourci à ga .
  • git commit -m "message" est raccourci à gc -m "message"
  • git push est raccourci à gp

entrez la description de l'image ici

dhahn
la source
1

J'utilise ce qui suit (les deux sont en cours de réalisation, je vais donc essayer de me souvenir de mettre à jour cela):

# 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

Avec la echo "Enter commit message:" && read MSGpartie inspirée de Sojan V Jose

J'adorerais avoir une if elsedéclaration là-dedans afin que je puisse obtenir aacv pour me demander si je veux déployer quand c'est fait et le faire pour moi si je tape 'y', mais je suppose que je devrais le mettre dans mon .zshrcfichier

avjaarsveld
la source
1

J'utilise l'alias suivant pour tout ajouter et valider :

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

Ensuite, en tapant:

git ac

Je reçois une fenêtre vim pour obtenir plus d'outils d'édition pour mon message de validation.

Gus
la source
Je devrais te poursuivre pour plagiat. :)
Navid Vafaei
Veuillez expliquer les différentes informations supplémentaires fournies par votre réponse par rapport à la réponse sensiblement plus ancienne de Navid.
Yunnosch
@Yunnosch Je suppose que je n'ai pas vu la réponse de Navid avant de poster car il est "trop ​​paresseux": P pour le poster comme réponse complète. En effet, c'est la même chose, et en fait j'ai cet alias depuis longtemps, je l'ai emprunté à un collègue. Donc je suppose que nous pouvons appeler cela: la chaîne du plagiat. Désolé si cela vous a dérangé.
Gus
1

Dans le cas où quelqu'un voudrait "ajouter et valider" pour un seul fichier, ce qui était mon cas, j'ai créé le script ci-dessous pour faire exactement cela:

#!/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

Je l'ai nommé "gitfile.sh" et l'ai ajouté à mon $ PATH. Ensuite, je peux exécuter git add et commit pour un seul fichier dans une seule commande:

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

J'utilise cet alias git:

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

Donc, au lieu d'appeler

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

Je fais juste:

git cam "this is a great commit"

Alejandro Silva
la source
0

vous pouvez utiliser git commit -am "[comment]" // meilleure solution ou git add. && git commit -m "[commentaire]"

Gaurav Rathi
la source
0

Vérifiez d'abord quels alias vous avez ...

git config --get-regexp alias

Si ce n'est pas le cas, vous pouvez créer le vôtre (référence: 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'

Par exemple, si vous utilisez le dernier ...

git acm 'My commit'
Cruz Jurado
la source
0
  1. Créez un alias dans bash: alias gac="git add -A && git commit -m"

    (J'ai choisi d'appeler le raccourci «gac» mais vous n'avez pas à le faire)

  2. Utilise le: gac 'your commit message here'

H. Almidan
la source
0

Pour les dos d'argent dans la foule qui sont habitués à des choses comme Subversion ... pour faire un "commit" dans le vieux sens du mot (c'est-à-dire - ou en git parler - pour ajouter, valider et pousser) dans un étape unique, j'ajoute généralement quelque chose comme ce qui suit à la racine de mon projet (sous forme de fichier bat dans Windows, par exemple git-commit.bat). Ensuite, quand je veux ajouter, valider et pousser, je tape simplement quelque chose commegit-commit "Added some new stuff" et tout va au référentiel distant.

De plus, de cette façon, n'importe qui sur le projet peut utiliser la même chose sans avoir à changer quoi que ce soit localement.

En général, je lance également git config credential.helper storeune fois, je n'ai donc pas besoin de donner uid / pwd lorsque celui-ci est exécuté.

::
:: 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
la source
0

Cela fonctionne pour moi, veuillez toujours exécuter les commandes suivantes:

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

où * est basé sur la branche vers laquelle vous appuyez, et les messages de validation peuvent toujours être modifiés en fonction du contexte.

Fredrick Okereke
la source
-1
  1. tapez git add . && git commit -amet entrez
  2. tapez historyet entrez
  3. rappelez-vous le numéro de la commande ci-dessus, disons que le numéro est 543
  4. Désormais, pour chaque type de commit !543 "your comment here"c'est-à-dire point d'exclamation + numéro et un espace et votre commentaire.
Kosmos Nagios
la source
4
J'ai rétrogradé parce que c'est une solution vraiment étrange qui peut briser les choses de manière horrible une fois que votre historique expire et que la 543e commande devient autre chose.
bfontaine
-2

Ce résultat - Essayez ceci: Script simple une commande pour git add, git commit et git push

Ouvrez votre CMD sur Windows et collez cette réponse

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

Cet exemple ma capture d'écran d'image: https://i.stack.imgur.com/2IZDe.jpg

Anang Hanafi
la source
-4

Pour le conserver sur une seule ligne, utilisez:

gacm "your comment"
Ravula Sathish
la source
2
Pourriez-vous éventuellement donner quelques informations à ce sujet ou un lien ou quelque chose?
Gershom
7
Je pense que cette affiche fonctionne avec des alias et ne s'en rend pas compte. Pour faire le travail ci-dessus, vous voudriez ajouter un alias shell comme alias gacm="git add .; git commit -m"ou (de préférence je pense) un alias git comme git config --global alias.gacm '!git add .;git commit -m'.
Mere Development