Git aggiunge e commette in un solo comando


392

C'è un modo in cui posso fare

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

in un comando?

Mi sembra di fare molto quei due comandi, e se Git avesse un'opzione del genere git commit -Am "commit message", renderebbe la vita molto più comoda.

git commitha il -amodificatore, ma non fa esattamente lo stesso di git add -Aprima di impegnarsi. git add -Aaggiunge i file appena creati, ma git commit -amnon lo fa. Cosa fa?



1
risparmiare tempo e impegnare ogni cambiamento è meglio, quindi sto usando git commit -am"yes the code in committed"
Rizo

git add .è un'opzione più veloce per aggiungere tutto
Ryan

Risposte:


419

Puoi usare gli alias git, ad es

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

e usalo con

git add-commit -m 'My commit message'

EDIT: ripristinato ai segni di spunta ('), poiché altrimenti fallirà per l'espansione della shell su Linux. Su Windows , si dovrebbe usare invece le virgolette (") invece (sottolineato nei commenti, non verificato).


24
Utilizzare git config --global --unset alias.<your_alias>per annullare l'alias.
TMOTTM

11
@MrFusion Trasforma il comando in un comando shell esterno invece di una scorciatoia nel comando git interno, ovvero rendendo l'intera riga eseguita come processo separato.
Martin C.,

8
Preferisco git config --global alias.add-commit '!git add -A && git commit -m'quindi non devo digitare -mogni volta.
incandescentman,

21
Sono troppo pigro per digitare 'add-commit' e '-m' ogni volta. Di conseguenza, git config --global alias.ac '!git add -A && git commit -m' git ac 'comment'
scrivo

5
git config --global alias.add-commit "!git add -A && git commit"(ovvero virgolette doppie anziché virgolette singole) è ciò che funziona su Windows.
Saheed,

269
git commit -am "message"

è un modo semplice per dire a git di eliminare i file che hai eliminato, ma in genere non consiglio tali flussi di lavoro complessi. Nella migliore pratica, i commit di Git dovrebbero essere abbastanza atomici e influenzare solo alcuni file.

git add .
git commit -m "message"

è un modo semplice per aggiungere tutti i file nuovi o modificati. Inoltre, si applica la qualifica generale. I comandi precedenti non elimineranno i file eliminati senza il git rmcomando.

git add app
git commit -m "message"

è un modo semplice per aggiungere tutti i file all'indice da una singola directory, in questo caso la appdirectory.


41
o semplicemente git commit -am "message"- assicurati solo che non ci siano nuovi file che Git non abbia ancora raccolto. altrimenti dovrai usarlo git add . &&di fronte a quello .... per farlo in una riga.
courtimas,

2
git add .
Ci

50

Per mantenerlo in una riga usare:

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

Questa riga aggiungerà e impegnerà tutti i file modificati e aggiunti al repository.


12
Va notato che questo è specifico per una shell Linux (bash e possibilmente altri).
R. Martinho Fernandes,

6
git commit -am "comment"è perfetto
Abhishek Bedi,

2
Se hai usato: git add . Quindi non devi usare l'opzione -a , devi solo:git commit -m "comment"
Duc Chi

18

Basta unire i tuoi comandi:

git add -A && git commit -m "comment" 

18

Adattando solo la risposta di Ales e il commento di courtimas per linux bash :

Per mantenerlo in una riga usare:

git commit -am "comment"

Questa riga aggiungerà e eseguirà il commit di tutte le modifiche modificate nel repository.

Assicurati solo che non ci siano nuovi file che Git non abbia ancora raccolto. altrimenti dovrai usare:

git add . ; git commit -am "message"


Come fare git commit -am "comment", ma solo per 1 file? Diciamo file.txt .
Santosh Kumar,

git commit -am "comment"è una scorciatoia per l'aggiunta e il commit di tutti i file modificati. Se vuoi aggiungere e impegnare solo 1 file di quello che devi eseguire:git add file.txt ; git commit -m "comment"
danilo

Nel secondo caso, non è necessario aggiungere -a con m. Dovrebbe essere git add. ; Git commit -m "message"
Manish Bansal

12

Nella versione successiva di git è possibile aggiungere e eseguire il commit in questo modo

git commit -a -m "commit message"

Inoltre hai un alias:

[alias]
    ac = commit -a -m

Quindi puoi usarlo in questo modo:

git ac "commit message"

6
Questo comando non impegna i nuovi file, ma solo quelli aggiornati.
Ruvim,

11

Sul mio computer Windows ho impostato questo .bashrcalias per rendere l'intero processo più semplice.

  • crea / trova il tuo .bashrc- fai riferimento alla discussione SO
  • aggiungi la seguente riga al file

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

    aggiunge add commit e push. ottimizzarlo in qualsiasi modo, dire che non si desidera che il comando push rimuova quella parte

  • ricaricare .bashrc/ chiudere e riaprire la shell

  • ora puoi eseguire l'intero processo con il gacpcomando.

Cordiali saluti quella sceneggiatura ha un git pushin esso. Non copiarlo e incollarlo.
Yar

11

abbastanza sicuro che puoi usare:

git commit -am "commit all the things"

1
Questo comando è il modo più breve e probabilmente il più semplice per ottenere il risultato richiesto. Test su git versione 2.6.3.windows.1.
Ithar,

5
Questo non impegnerà i file appena aggiunti, solo quelli "aggiornati"!
user13107

1
CORRETTO non inizierà il tracciamento dei file non tracciati
Blair Anderson il

@BlairAnderson - Esiste un comando per aggiungere file non tracciati anche con add e commit?
MasterJoe2

6

Se digiti:

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

una volta, dovrai solo digitare

git a

ogni volta:

git a 'your comment'

4
questa dovrebbe essere la risposta migliore, super facile e include file UNTRACKED a differenza della maggior parte degli altri suggerimenti.
JesseBoyd,

6

Usa solo:

git commit -m "message" .     

Notare il "." alla fine ... che può anche essere un percorso per un file / directory


funzionerà per i file appena creati o solo quelli esistenti che vengono modificati?
MasterJoe2

5

Faccio una conchiglia

#!/bin/sh

clear

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

salva ad esempio git.sh e successivamente chiama:

sh git.sh your commit message

1
non portabile su altri sistemi operativi e git può farlo da solo, quindi qual è il punto?
nought101

2
@ naught101 è ovvio che git può farlo da solo, il punto è che questa shell serve a semplificare il processo per le persone che usano git su linux, essendo molto più semplice eseguire un sh git.sh il tuo messaggio di commit e non essere reso portatile non significa che funzionerà correttamente.
ademar111190,

5

Ho questa funzione nella mia .bash_profileo .profileo .zprofileo qualsiasi altra cosa viene provenienza in shell di 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"
}

3

Puoi usarlo -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.

2

Spero che questo aiuti qualcuno e non esitate a modificare o migliorare. Non sono sicuro di quale sia il modo più veloce , ma questo certamente semplifica il mio processo di commit del codice usando "ohmyzsh" per Git .

https://ohmyz.sh/

  • git add . è abbreviato in ga .
  • git commit -m "message" è abbreviato in gc -m "message"
  • git push è abbreviato in gp

inserisci qui la descrizione dell'immagine


1

Uso quanto segue (entrambi sono in corso, quindi cercherò di ricordarmi di aggiornare questo):

# 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

Con il echo "Enter commit message:" && read MSG parte ispirata a Sojan V Jose

Mi piacerebbe avere una if elsedichiarazione lì in modo da poter ottenere aacv per chiedermi se voglio distribuire quando è fatto e farlo per me se digito 'y', ma immagino che dovrei metterlo nel mio .zshrcfile


1

Uso il seguente alias per aggiungere tutto e impegnare :

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

Quindi, digitando:

git ac

Ottengo una finestra di vim per ottenere più strumenti di modifica per il mio messaggio di commit.


Dovrei farti causa per plagio. :)
Navid Vafaei,

Spiega le diverse informazioni aggiuntive fornite dalla tua risposta rispetto alla risposta notevolmente più vecchia di Navid.
Yunnosch,

@Yunnosch Immagino di non aver visto la risposta di Navid prima di pubblicare perché è "troppo pigro": P per pubblicarla come una risposta completa. Anzi, è lo stesso, e in realtà ho questo alias da molto tempo fa, l'ho preso in prestito da un collega. Quindi immagino che possiamo chiamarlo: catena del plagio. Scusa se ti ha disturbato.
Gus,

1

Nel caso in cui qualcuno volesse "aggiungere e impegnare" per un singolo file, che era il mio caso, ho creato il seguente script per fare proprio questo:

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

L'ho chiamato "gitfile.sh" e l'ho aggiunto al mio $ PATH. Quindi posso eseguire git add e commit per un singolo file in un solo comando:

gitfile.sh /path/to/file "MY COMMIT MESSAGE"

0

Uso questo alias git:

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

Quindi, invece di chiamare

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

Faccio solo:

git cam "this is a great commit"


0

puoi usare git commit -am "[commento]" // migliore soluzione o git add. && git commit -m "[commento]"


0

Controlla prima quali alias hai ...

git config --get-regexp alias

In caso contrario, puoi crearne uno tuo (riferimento: 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'

Ad esempio, se usi l'ultimo ...

git acm 'My commit'

0
  1. Crea un alias in bash: alias gac="git add -A && git commit -m"

    (Ho scelto di chiamare la scorciatoia 'gac' ma non è necessario)

  2. Usalo: gac 'your commit message here'


0

Per i dorsi d'argento nella folla che sono abituati a cose come Subversion ... per fare un "commit" nel vecchio senso della parola (cioè - o in parole povere - per aggiungere, impegnare e spingere) in un unico passaggio In genere aggiungo qualcosa di simile alla radice del mio progetto (come file bat in Windows, ad esempio git-commit.bat). Quindi, quando voglio aggiungere, eseguire il commit e spingere, digito semplicemente qualcosa del generegit-commit "Added some new stuff" e tutto va al repository remoto.

Inoltre, in questo modo chiunque nel progetto può usare lo stesso senza dover cambiare nulla a livello locale.

Di solito corro anche git config credential.helper storeuna volta, quindi non ho bisogno di dare uid / pwd quando viene eseguito.

::
:: 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.

0

Per me funziona sempre, per favore, esegui i seguenti comandi:

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

dove * si basa sul ramo in cui si sta spingendo e anche i messaggi di commit possono sempre essere modificati per adattarsi al contesto.


-1
  1. digitare git add . && git commit -ame inserire
  2. digitare historye inserire
  3. ricordare il numero per il comando sopra, dire che il numero è 543
  4. D'ora in poi, per ogni tipo di commit !543 "your comment here"ovvero punto esclamativo + numero e uno spazio e il tuo commento.

4
Ho annullato il voto perché è una soluzione davvero strana che potrebbe rompere le cose in modi orribili una volta scaduta la tua storia e quel 543 ° comando diventa qualcos'altro.
bfontaine,


-4

Per mantenerlo in una riga usare:

gacm "your comment"

2
Potresti forse dare qualche informazione su questo o un link o qualcosa del genere?
Gershom,

7
Penso che questo poster funzioni con gli alias e non se ne rende conto. Per far funzionare il lavoro sopra, ti consigliamo di aggiungere un alias di shell simile alias gacm="git add .; git commit -m"o (preferibilmente penso) un alias git simile git config --global alias.gacm '!git add .;git commit -m'.
Mere Development
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.