Come posso mettere in scena e eseguire il commit di tutti i file, inclusi quelli appena aggiunti, usando un singolo comando?
Come posso mettere in scena e eseguire il commit di tutti i file, inclusi quelli appena aggiunti, usando un singolo comando?
Risposte:
fa
git add -A && git commit -m "Your Message"
conta come un "comando singolo"?
Modifica in base alla risposta di @ thefinnomenon di seguito :
Per averlo come un git alias
, utilizzare:
git config --global alias.coa '!git add -A && git commit -m'
e impegna tutti i file, inclusi i nuovi file, con un messaggio con:
git coa "A bunch of horrible changes"
Spiegazione (dalla git add
documentazione ):
-A, --all, --no-ignore-rimozione
Aggiorna l'indice non solo dove l'albero di lavoro ha una corrispondenza file ma anche dove l'indice ha già una voce. Ciò aggiunge, modifica e rimuove le voci di indice in modo che corrispondano all'albero di lavoro.
Se non
<pathspec>
viene fornita alcuna opzione quando viene utilizzata l'opzione -A, vengono aggiornati tutti i file nell'intero albero di lavoro (le vecchie versioni di Git venivano utilizzate per limitare l'aggiornamento alla directory corrente e alle sue sottodirectory).
git add -A ; git commit -m "Your Message"
Questo comando aggiungerà e impegnerà tutti i file modificati, ma non i file appena creati .
git commit -am "<commit message>"
Da 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.
Uso questa funzione:
gcaa() { git add --all && git commit -m "$*" }
Nel mio file di configurazione zsh, quindi posso solo fare:
> gcaa This is the commit message
Per mettere in scena e impegnare automaticamente tutti i file.
function gcaa() { git add --all && git commit -m "$*" && git push }
gaa && gc -m "my commit"
ma è molto più bello ... <si affretta a cambiare bashrc ..>
One-liner per mettere in scena TUTTI i file ( modificati , eliminati e nuovi ) e eseguire il commit con un commento:
git add --all && git commit -m "comment"
http://git-scm.com/docs/git-add
http://git-scm.com/docs/git-commit
Non sono sicuro del motivo per cui queste risposte danzano intorno a ciò che credo sia la soluzione giusta, ma per quello che vale qui è quello che uso:
git config --global alias.coa '!git add -A && git commit -m'
git coa "A bunch of horrible changes"
NOTA: coa
è l'abbreviazione di commit all e può essere sostituito con qualsiasi cosa il tuo cuore desideri
git alias
strada, il resto è noioso.
Il commit in git può essere un processo a più fasi o un passaggio a seconda della situazione.
Questa situazione è dove hai aggiornato più file e vuoi impegnarti:
Devi aggiungere tutti i file modificati prima di eseguire il commit di qualsiasi cosa.
git add -A
o
git add --all
Successivamente è possibile utilizzare il commit di tutti i file aggiunti
git commit
con questo devi aggiungere il messaggio per questo commit.
Se vuoi solo un modo "rapido e sporco" per riporre le modifiche sul ramo corrente, puoi usare il seguente alias:
git config --global alias.temp '!git add -A && git commit -m "Temp"'
Dopo aver eseguito quel comando, puoi semplicemente digitare git temp
per fare in modo che git esegua automaticamente il commit di tutte le modifiche al ramo corrente come commit denominato "Temp". Quindi, puoi utilizzare in git reset HEAD~
seguito per "annullare il commit" delle modifiche in modo da poter continuare a lavorarci o git commit --amend
per aggiungere altre modifiche al commit e / o assegnargli un nome proprio.
Ho nella mia configurazione due alias:
alias.foo=commit -a -m 'none'
alias.coa=commit -a -m
se sono troppo pigro, commetto tutte le modifiche con
git foo
e solo per fare un rapido commit
git coa "my changes are..."
coa sta per "commit all"
Esegui il comando dato
git add . && git commit -m "Changes Committed"
Tuttavia, anche se sembra un singolo comando, è due comandi separati eseguiti uno per uno. Qui li abbiamo usati solo &&
per combinarli. Non è molto diverso da quello di correre
git add .
e git commit -m "Changes Committed"
separatamente. Puoi eseguire più comandi insieme ma la sequenza è importante qui. Se, se desideri inviare le modifiche al server remoto insieme alla gestione temporanea e al commit, puoi farlo come indicato,
git add . && git commit -m "Changes Committed" && git push origin master
Invece, se si modifica la sequenza e si mette push
al primo posto, verrà eseguito per primo e non darà la spinta desiderata dopo la messa in scena e il commit solo perché è già stato eseguito per primo.
&&
esegue il secondo comando sulla riga quando il primo comando viene restituito correttamente o con un livello di errore pari a 0. L'opposto di &&
è ||
, che esegue il secondo comando quando il primo comando non ha esito positivo o con un livello di errore pari a 1.
In alternativa, puoi creare alise as git config --global alias.addcommit '!git add -a && git commit -m'
e usarlo comegit addcommit -m "Added and commited new files"
Grandi risposte, ma se cerchi una linea singola fai tutto, puoi concatenare, alias e goderti la comodità:
git add * && git commit -am "<commit message>"
È una riga singola ma due comandi e, come detto, puoi alias questi comandi:
alias git-aac="git add * && git commit -am "
(lo spazio alla fine è importante) perché stai per parametrizzare il nuovo comando di scelta rapida.
Da questo momento in poi, utilizzerai questo alias:
git-acc "<commit message>"
In pratica dici:
git, aggiungi per me tutti i file non tracciati e esegui il commit con questo dato messaggio di commit.
Spero che tu usi Linux, spero che questo aiuti.
Puoi scrivere un piccolo script (guarda la risposta di Ian Clelland) chiamato git-commitall
che utilizza diversi comandi git per eseguire ciò che vuoi fare.
Inserisci questo script ovunque nel tuo $PATH
. Puoi chiamarlo da git commitall
... molto utile!
Trovato qui (domanda e tutte le risposte purtroppo cancellate, visibili solo con alta reputazione)