2011-01-06 15 views
26

Ho un progetto con la seguente struttura di cartelle:file non monitorate non mostrati in git status

Tutti i file di progetto sono nella cartella base_fldr. Inoltre ho alcune cartelle all'interno di base_fldr chiamate sub_fldr1 e sub_fldr2. Queste sottocartelle contengono anche alcuni file.

Se modifico qualcuno dei file nel mio base_fldr o in base_fldr \ sub_fldr \ allora lo stato di git li mostra come modificati. Inoltre se aggiungo un nuovo file a base_fldr, lo stato git lo mostrerà come file non tracciato.

Il mio problema è se aggiungo un nuovo file all'interno di base_fldr \ sub_fldr \ allora lo stato di git non mostra il file come non tracciato. Non darà nemmeno alcuna informazione sul file.

Il file o la sua estensione NON è nella mia lista .gitignore. Inoltre ho provato git add sub_fldr \ nome_file ma nessuno dei due ha dato un errore né aggiunge il file all'indice.

Qualche idea di cosa sta succedendo qui? Grazie!

+3

Il file appare se si esegue 'git status -u' –

+1

No it did not. git status -u mostra i file appena aggiunti dentro il mio base_fldr ma non quelli all'interno di base_fldr \ sub_fldr | – kriver

risposta

20

Ho capito cosa stava andando storto. Fondamentalmente la prima riga nel mio file .gitignore è "* /". Questo fa sì che qualsiasi file aggiunto alla sottodirectory venga ignorato dal comando git status. Ma la cosa divertente è che se modifico qualche file nella sottocartella, lo stato git lo mostra correttamente come modificato mentre il file è già nel repository git, ma stava ignorando i nuovi file nella sottocartella.

Ho risolto il problema rimuovendo la riga nel file .gitignore per non ignorare le modifiche nelle sottocartelle, quindi aggiunto i nuovi file all'indice e quindi nuovamente aggiunto la riga in .gitignore in modo che ignori tutti i file generati in sottocartelle.

Grazie a tutti per le risposte.

+3

La stessa cosa è successa a me e alla fine ho realizzato che avevo già aggiunto il nome della cartella che avevo creato sul file .gitignore mesi fa senza una ragione apparente! Ma +1 per questa risposta facendomi controllare ;-) ... e -1 per me per la ricerca di StackOverflow prima ancora di verificarlo – PandaWood

8

Hai una sottodirectory .git all'interno della directory sub_fldr? Git potrebbe pensare che stai provando a usare submodules.

+0

Non esiste una directory .git all'interno di sub_fldr – kriver

+0

Se la sottodirectory .git era sotto le modifiche, dovrebbe comunque essere visualizzata nella cartella principale – quantumpotato

+0

assicurati di avere impostato "Mostra tutti i file" - che mi ha tenuto occupato per alcune ore. Ho avuto una sottodirectory ".git", non ho potuto vederlo. Ma Git potrebbe ... – TobyEvans

13

Questo è probabilmente perché il vostro base_fldr \ sub_fldr \ directory è non tracciata, se si esegue:

git add base_fldr\sub_fldr\ 

Da all'interno della vostra radice copia di lavoro, si aggiungerà automaticamente la directory e altri file e directory all'interno di tale directory bene.

Per impostazione predefinita, git non mostrerà i file all'interno delle directory non tracciate.

+0

L'OP dice che i file modificati all'interno di 'sub_fldr' * sono * mostrati in' git status'. –

+0

Il mio base_fldr \ sub_fldr \ è tracciato. In realtà se modifico uno stato git di file esistente mostra correttamente il file all'interno di sub_fldr come modificato. – kriver

2

Ecco un'altra causa del comportamento descritto in questa domanda (l'elenco dei file non tracciati di stato git non include un file non tracciato in una sottocartella). Se il file non è tracciato a causa di un file .gitignore nella sottocartella, il file non verrà incluso nell'elenco dei file non tratteggiati dello stato git.

14

Ho riscontrato un problema simile con i file di tracciamento mancanti.Mentre la sperimentazione di modi per gestire versioni modificate a livello locale dei file cingolati senza dover per evitare costantemente impegna accidentali, ho eseguito il seguente:

git update-index --assume-unchanged my-tracked-file-that-is-awol 

ho finito per la demolizione questa idea, ma ho dimenticato di annullare il comando, in modo da successive modifiche questo e altri file --assume-invariati sono stati completamente manca:

git status -u --ignored 

mi c'è voluto un po 'per capire cosa stava succedendo, ma ho semplicemente dovuto invertire il comando con:

git update-index --no-assume-unchanged my-tracked-file-that-is-awol 
Problemi correlati