2010-08-22 13 views
72

Qual è la differenza tra:git add. vs git commit -a

  • git add .
  • git commit -a

dovrei fare entrambe le cose, o è superfluo?

+2

vedi anche (non duplicato esatto, però): http://stackoverflow.com/questions/572549/difference-of-git-add-a-and-git-add –

risposta

99

git commit -a significa quasi [*] la stessa cosa di git add -u && git commit.

Non è lo stesso di git add . poiché ciò aggiungerebbe file non tracciati che non vengono ignorati, git add -u solo modifiche di stadi (incluse le eliminazioni) a file già tracciati.

[*] C'è una sottile differenza se non si è nella directory principale del repository. git add -u passa gli aggiornamenti ai file nella directory corrente e sotto, è equivalente a git add -u . mentre fasi e commuta le modifiche a tutti i file rilevati.

+2

The il comportamento in [*] cambierà in git 2.0, per coerenza. – user1284631

+2

In quale direzione? Ad esempio, commit -a diventa come add -u, o aggiungerà -u diventerà come commit -a? –

+3

@MilesRout: 'git add -u' diventerà come' git commit -a'; dovrai dire esplicitamente 'git add -u .' se questo è ciò che intendi. –

13

git commit -a invoca automaticamente git add su tutti i file di cui è a conoscenza. È possibile utilizzare git add per selezionare i file da impegnare. Consulta i documenti per maggiori informazioni: here

+8

* tutti i file che conosce * sono molto poco chiari per me, soprattutto dal momento che quelli non erano supposti aggiunti –

+0

@Nikana Reklawyks Hai la definizione di "aggiungi" errata. Aggiungi non significa la stessa cosa che fa in svn. Tutto ciò che fa è aggiornare l'indice. [Scusa per la risposta lenta, non ricordo di aver ricevuto una notifica per quel commento] – alternative

+1

@alternative, Ancora questa risposta può fare meglio se aggiungi un chiarimento per "tutti i file che conosce" ..... – Pacerier