2013-04-17 6 views
7

E 'possibile saltare l'area di staging e (anche) commettere non tracciato, nuovi file da rilasciare?E 'possibile saltare l'area di staging e (anche) commettere nuovi file non tracciati su git?

http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository

Fornendo l'opzione -a al comando git commit rende Git in scena automaticamente ogni file che è già monitorato prima di fare il commit, che ti permette di saltare la git add parte:

$ git commit -a -m 'added new benchmarks'

Grazie.

+0

È possibile specificare nomi di file sulla riga di comando anche dopo il comando 'commit'. – Richard

+0

@Richard Che non impegnerà i file non tracciati. Otterrai il messaggio di errore 'non corrisponde a nessun file noto a git' –

risposta

2

Questo potrebbe sembrare abbastanza banale per i guru, ma è una rivelazione minore per me (lo ammetto) - almeno ho appena usato per la prima volta oggi e funziona (senza alias personalizzati): Basta utilizzare un punto e virgola ; e che funzionerà come un one-liner:

git add --all; git commit -m "some informative commit message"

13

Utilizzo di un singolo comando integrato da riga di comando? No.

utilizzando due comandi:

git add -A 
git commit 

Utilizzando un alias personalizzato:

Aggiungi questo al .gitconfig:

[alias] 
    commituntracked = "!git add -A; git commit" 

allora si può fare

git commituntracked 
+0

Posso chiedere gentilmente come espandere l'alias personalizzato per includere anche il messaggio di commit (" variabile ")? Grazie! –

+0

Dipende dal sistema operativo su cui si sta eseguendo. Questa domanda ha alcuni buoni esempi http://stackoverflow.com/questions/3321492/git-alias-with-positional-parameters-git-foo-aaa-bbb-ccc-foo-aaa-bar-bbb –

+0

Linux. Scusa, ma non riesco (almeno a prima vista) a mettere insieme gli esempi su quel collegamento e ad applicarli qui, in modo da includere il messaggio di commit git. Potrei semplicemente aggiungere '-m' per dare' git commituntracked -m "qualche messaggio" '? –

2

Sì. Ci sono almeno due modi principali per farlo. Innanzitutto, non è necessario utilizzare "l'area di gestione temporanea", è possibile disporre di tutte le aree di gestione temporanea desiderate - impostare GIT_INDEX_FILE=/path/to/private/index e procedere come desiderato; il secondo che puoi costruire ti commette da solo, direttamente. Non è nemmeno difficile.

Il nucleo del repository di Git si occupa di oggetti blob, tree e commit (anche qui non rilevanti, note e tag annotati). Il comando git per eseguire il dump degli oggetti è git cat-file -p.

Un blob è solo un bag-o-bit. Aggiungi uno al repository con git hash-object -wfilename, stamperà il ~ vero nome ~ del blob in quel file e aggiungerà il blob al repository. Un albero lega un oggetto a un nome di file system. Aggiungi uno al repository con git mktree; per vedere cosa alimentarlo, stampa un albero con ad es. git cat-file -p HEAD^{tree}. Aggiungi un commit al repository con git commit-tree, in fondo, si dice git commit-tree -pmom-pdad sometree, impostare alcune variabili d'ambiente, e dei mangimi un messaggio di commit su stdin.

Questo è davvero tutto ciò che è necessario; se si desidera approfondire l'affettatura e la fustellatura con alberi e staging read-tree e write-tree può essere molto utile, se questo è per niente attraente, lo git core tutorial è una buona panoramica.

Problemi correlati