Git commit -a "file non tracciati"?


92

Quando faccio un git commit -a, vedo quanto segue:

  # Please enter the commit message for your changes. Lines starting
  # with '#' will be ignored, and an empty message aborts the commit.
  # On branch better_tag_show
  # Changes to be committed:
  #   (use "git reset HEAD <file>..." to unstage)
  #
  # modified:   ../assets/stylesheets/application.css
  # modified:   ../views/pages/home.html.erb
  # modified:   ../views/tags/show.html.erb
  # modified:   ../../db/seeds.rb
  #
  # Untracked files:
  #   (use "git add <file>..." to include in what will be committed)
  #
  # ../assets/stylesheets/
  # ../views/pages/

Cosa significano quei file non tracciati? Tutte le modifiche sono state effettivamente monitorate. Non capisco perché git mi avverta di file non tracciati qui.

MODIFICA :

Ok vedo molte risposte confuse. Questo è quello che succede dopo che io git commit -aquesto.

# On branch master
nothing to commit (working directory clean)

Come puoi vedere, non c'è NIENTE oltre a quei quattro file a cui sono state applicate modifiche.

La mia domanda dovrebbe essere riformulata come segue: Perché git mi avverte di file non tracciati quando tutte le modifiche in questo commit sono state tracciate?

In altre parole, l'avviso non tracciato nel messaggio git commit non è necessario ?


1
(use "git add <file>..." to include in what will be committed)
zengr

1
zengr che non è necessario perché git commit -a eseguirà tutte le modifiche ai file che sono stati tracciati.
scomparso il

3
Si è necessaria quando i file non sono mai stati addcato fino ad ora. Dai documenti per -a: Indica al comando di mettere in scena automaticamente i file che sono stati modificati ed eliminati, ma i nuovi file di cui non hai parlato a git non sono interessati .
Noufal Ibrahim

Perché dici che git ti sta 'avvertendo'? A mio avviso, il messaggio relativo ai file "non tracciati" è informativo. Sta a te vedere se quei file devono essere gestiti e agire di conseguenza.
sateesh

@sateesh Beh, comunque tu voglia chiamarlo, continuo a non pensare che sia davvero utile. Come sono queste informazioni? Cosa dovrei fare? Hai letto il mio post nella sezione "EDIT" dove ho scritto che non ci sono modifiche su nessun altro file ad eccezione di quelli sopra elencati? Se trovi questo informativo, è equivalente a me che ti dico che qualsiasi cartella casuale sul tuo albero del repository non verrà tracciata quando non c'è nulla di cui preoccuparsi.
scomparso il

Risposte:


105

Per altri che hanno lo stesso problema, prova a correre

git add . che aggiungerà tutti i file della directory corrente da tracciare (inclusi quelli non tracciati) e quindi utilizzerà

git commit -a per eseguire il commit di tutti i file tracciati.

Come suggerito da @Pacerier, una linea che fa la stessa cosa è

git add -A


4
git commit -aeseguirà il commit di tutti i file tracciati, non terrà traccia dei file non tracciati. git add .terrà traccia dei file non tracciati nella directory corrente. git add -aterrà traccia di tutti i file non tracciati.
qui il

@matteo lo è git add -A, no git commit -A. Per quanto ne so, non esiste alcun interruttore a cui puoi passare git commitche includa file non tracciati.
Len

1
-a sembra essere deprecata solo per A ora. Grazie, lo stesso. :)
tcratius

Per un approfondimento su questi comandi, è possibile controllare: stackoverflow.com/questions/572549/...
Onat Korucu

30

git commit -am "msg"non è uguale a git add fileegit commit -m "msg"

Se hai alcuni file che non sono mai stati aggiunti a git tracking devi comunque farlo git add file

Il comando "git commit -a" è una scorciatoia per un processo in due fasi. Dopo aver modificato un file che è già noto al repository, devi ancora dire al repository, "Hey! Voglio aggiungerlo ai file di staging e infine inviarlo a te. " Ciò viene fatto eseguendo il comando "git add". "Git commit -a" esegue lo staging del file e lo esegue in un unico passaggio.

Fonte: "git commit -a" e "git add"


ma, come hai detto, git commit -a = git add. + git commit perché non aggiungerebbe automaticamente il file all'area di tracciamento ?? ....
Johnny

1
@ Johnny: git commit -anon è uguale a git add .+ git commit. Il git addpassaggio aggiunge solo i file che sono elencati come modificati nel tuo git status, non tutto nella directory corrente.
Soren Bjornstad

Sì, l'ho scoperto oggi!
KansaiRobot

9

Dovresti digitare nella riga di comando

git add --all

Questo eseguirà il commit di tutti i file non tracciati

Modificare:

Dopo aver messo in scena i tuoi file sono pronti per il commit, quindi il tuo prossimo comando dovrebbe essere

git commit -am "Your commit message"

5
Questo mette in scena tutti i file, non li esegue il commit . Devi ancora farlo separatamente.
Saeb Amini

8
  1. Per prima cosa devi aggiungere tutti i file non tracciati. Usa questa riga di comando:

    git add *

  2. Quindi eseguire il commit utilizzando questa riga di comando:

    git commit -a


7

Se hai problemi con file non tracciati, questo script di 3 righe ti aiuterà.

git rm -r --cached .
git add -A
git commit -am 'fix'

Quindi solo git push


Questo per me funziona perché avevo bisogno di annullare il tracciamento dei file tracciati che ora sto ignorando.
Spyder Man

2

Come suggerisce il nome, i "file non tracciati" sono i file che non vengono tracciati da git. Non si trovano nella tua area di staging e non facevano parte di alcun commit precedente. Se vuoi che abbiano una versione (o che siano gestiti da git) puoi farlo dicendo "git" usando "git add". Controlla questo capitolo Registrazione delle modifiche al repository nel libro Progit che utilizza una bella visuale per fornire una buona spiegazione sulla registrazione delle modifiche al repository git e spiega anche i termini 'tracciato' e 'non tracciato'


0

Assicurati di essere nella directory corretta (cartella principale del repository) nel tuo git locale in modo che possa trovare la configurazione della cartella .git prima di eseguire il commit o aggiungere file.


Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti a un autore, lascia un commento sotto il suo post. - Dalla recensione
sampathsris
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.