Git sta ignorando i file che non sono in gitignore


117

Ho un repository git che ignora i file di immagine e alcuni altri file, ma il mio .gitignorefile ignora solo un config.phpfile. C'è qualche file da ignorare globale da qualche parte che non riesco a trovare? Devo specificare i file per aggiungerli ora, e mi dà questo avviso:

I seguenti percorsi vengono ignorati da uno dei tuoi file .gitignore.

Il contenuto del mio ~/.gitconfigfile è solo il mio indirizzo e-mail.


Risposte:


198

git check-ignore

Usa il git check-ignorecomando per eseguire il debug del tuo file gitignore (escludi file).

Per esempio:

$ git check-ignore -v config.php
.gitignore:2:src    config.php

I dettagli di output sopra sul modello di corrispondenza (se presente) per ogni dato percorso (inclusa la riga).

Quindi forse l'estensione del file non viene ignorata, ma l'intera directory.

Il formato restituito è:

<source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>

Oppure utilizza il seguente comando per stampare la tua .gitignorecartella home dell'utente e del repository:

cat ~/.gitignore "$(git rev-parse --show-toplevel)"/.gitignore "$(git rev-parse --show-toplevel)"/.git/info/exclude

In alternativa, usa git add -fche consente di aggiungere file altrimenti ignorati.

Vedere: man gitignore, man git-check-ignoreper maggiori dettagli.

Sintassi

git check-ignore [opzioni] percorso nome ...

git check-ignore [opzioni] --stdin


5
Questo è molto meglio della risposta accettata. Senza offesa per quello, ma questo mi ha salvato la giornata. Grazie Kenorb.
luanjunyi

1
Merita più voti positivi. Ho scoperto che alcuni strani gitignore in alcune cartelle / vendor / hanno causato problemi con l'ultima versione di git.
Manuel Arwed Schmidt

2
questo mi ha salvato oggi ... sembra che visual studio abbia creato un file chiamato gitignore_global.txt nella cartella dei documenti degli utenti e questo stava ignorando i file che non ero in grado di (dis) ignorare
Samuel

1
Ha risolto perfettamente il mio problema. Alcuni modelli non sono facili da catturare all'occhio !!
Willa

54

Potrebbe essere utile sapere che la tua configurazione git può contenere un core.excludesfile che è un percorso a un file con pattern aggiuntivi che vengono ignorati. Puoi scoprire se hai una tale configurazione eseguendo (nel repo git problematico):

git config core.excludesfile

Se stampa un percorso di file, guarda il contenuto di quel file per ulteriori informazioni.

Nel mio caso ho installato git tramite una vecchia versione di boxen che ignorava il pattern "Icon?" che nel mio caso mi ha dato l'avviso, menzionato in questa domanda, per le icone di una cartella (sono su un filesystem senza distinzione tra maiuscole e minuscole, ecco perché Icon? corrisponde alle icone).


2
Questo era davvero il mio problema. Non sono sicuro di come o quando questo file venga modificato, ma conteneva il file che volevo elencato
toxaq

2
Grazie, mi hai risparmiato ore di pura agonia. Nel mio caso, è stata l'installazione dell'albero dei sorgenti (uno strumento per visualizzare git repo) che creava in modo non logico nella cartella dei documenti un gitignore_global.txt che includeva molte esclusioni.
Oggetto meccanico

Ho avuto lo stesso maledetto Icon?essere ignorato.
Justin Skiles

Questo è stato il caso per me. Aveva alcune regole all'interno del file ignora globale. Grazie per la punta +1
Follia

Avevo * .json nel mio ignorare globale - parlare di un incubo - grazie!
Jason Perfetto il

31

Dai un'occhiata a questi:

  1. Hai cercato altri file .gitignore, poiché possono essercene molti.

  2. Inoltre, guarda REPO / .git / config per vedere se c'è qualcosa lì.

  3. Escludi repository Le regole locali per repository possono essere aggiunte al file .git / info / exclude nel tuo repository. Queste regole non vengono salvate con il repository, quindi non vengono condivise con altri. Questo metodo può essere utilizzato per i file generati localmente che non ti aspetti che altri utenti generino, come i file creati dal tuo editor.


Non ci sono altri file .gitignore nel repository, né c'è nulla nel file .git / config che ignori qualcosa. Come è configurato .git / info / exclude?
Ian Hunter

4
Non è chiaro il motivo per cui questa risposta è contrassegnata come risposta. Come è stato risolto esattamente questo problema?
Prossimo sviluppatore

escludere era il mio problema. Sapevo che c'era un altro modo per ignorare, che avevo usato in passato, ma ho dimenticato dov'era!
Chucky

22

Ho avuto lo stesso problema: una directory veniva ignorata da git con questo errore:

➭ git add app/views/admin/tags/
The following paths are ignored by one of your .gitignore files:
app/views/admin/tags
Use -f if you really want to add them.
fatal: no files added

Alla fine ho capito che il mio problema era una riga nel mio ~/.gitignore_global:

TAGS

che corrispondeva al percorso app/views/admin/tags. L'ho risolto aggiungendo una barra iniziale al file gitignore globale

/TAGS

e git ha iniziato a monitorare di nuovo la mia directory.


3
+1 per avermi fatto cercare corrispondenze parziali ... gitignore_global.txt conteneva "[Rr] elease * /" che faceva ignorare la mia directory "releasenotes".
Trev

Per renderlo ancora più difficile, git ignorerà solo i file aggiunti di recente, non quelli già presenti nel repository. Quindi, quando ho aggiunto "foo /" al mio .gitignore, ha ignorato solo i file aggiunti di recente nelle sottodirectory foo e non tutti i file. Mi ci è voluta un'ora per capire perché alcuni file venivano ignorati e altri no.
ccleve

Ho lo stesso problema. SourceTree imposta il file ~ / .gitignore_global nel menu Strumenti-> Elemento Opzioni-> scheda Git. Dopo aver ripulito il campo Global Ignore list "git add ...", il comando ha funzionato.
Kate

Ho avuto lo stesso problema. Avevo una helpdirectory che veniva ignorata. Fortunatamente ho trovato la tua risposta abbastanza rapidamente.
Abdul Sadik Yalcin

9

Per me ho accidentalmente avuto un carattere jolly nel mio file ~ / .gitignore_global. Forse controllare lì?


1
Questo era esattamente il problema per me. Avevo * .png lì, non ho idea di come sia arrivato lì.
Shahar

3

Un'altra cosa da provare: avevo una directory B con il proprio .gitrepository annidato nella directory del mio progetto A (ma non come sottomodulo). Ho apportato alcune modifiche a B e volevo trasformarlo in un sottomodulo autentico. Credo che git A ignorasse automaticamente B perché conteneva il proprio repository (vedi Repository git annidati senza sottomoduli? ). Ho rinominato la cartella B e ho provato a clonarla di nuovo come sottomodulo, e questo mi ha portato il messaggio di errore fuorviante "ignorato da .gitignore". La soluzione era eliminare .gitB.


2

Stavo avendo lo stesso identico problema di te. L'unica risposta che hai ottenuto ha elencato alcuni posti da controllare, ma nessuno di loro ha risolto il problema per me, e dal tuo commento non penso nemmeno per te. Non avevo ALTRI file .gitignore nascosti nella parte inferiore dell'albero delle directory; niente in .git / config; niente in .git / ingore / exclude

Se il problema persiste, controlla questa risposta . Ha risolto il problema per me

Fondamentalmente, controlla un file ~ / .gitignore. Il mio si chiamava ~ / .gitignore_global. Non so quando è stato creato ( io di certo non ho fatto), ma ho provato un sacco di configurazione git diversa è quando ho installato prima, così uno di loro deve aver messo lì.

Spero che anche la sua risposta ti aiuti!


1

Un altro motivo per ricevere questo messaggio di errore da git è quando si esegue il git submodule addcomando mentre un precedente comando git è andato in crash e ha lasciato il file di blocco (questo può accadere, ad esempio, quando si utilizzano script personalizzati che includono comandi git e non si è notato il in crash).

Se invece esegui il comando git commit, mentre nessuna delle condizioni è cambiata ( git submodule addcontinuerai a urlare che la .gitignorecolpa è dei tuoi file), vedrai invece un altro rapporto di errore:

$ git commit -a
fatal: Unable to create '..../.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

e in effetti eliminando il file di blocco:

rm .git/index.lock

risolve il problema. (Questo accade alla versione 2.1.0.9736 di git. Potrebbe essere corretto nelle versioni future di git.)


Grazie, questo si è rivelato essere il problema che stavo avendo. Salvavita!
JDawgg

1

Verifica di disporre dell'autorizzazione per la cartella. Mi sono appena imbattuto in questo ed è stato perché la cartella era di proprietà dell'utente www-data e non dell'utente con cui ero connesso al terminale.


1

Nel mio caso è stato il taglio in avanti sul mio percorso a causare il problema ...

Non funziona

/srv/bootstrap/

Lavoro

srv/bootstrap/

1

Un'altra cosa: se la directory in cui ti trovi richiede l'accesso come root per la scrittura o l'esecuzione, assicurati di essere sull'utente root. In realtà ho ricevuto uno strano errore in cui stavo cercando di aggiungere un sottomodulo e git continuava a lamentarsi che il percorso in cui stavo clonando veniva ignorato da un file git ignore. Quindi sono passato a utente root, ho eseguito di nuovo l'aggiunta del sottomodulo e non ci sono stati problemi.


0

Controlla anche ~/.gitignoree ~/.gitignore_globalquale potrebbe essere creato da alcuni client Git (ad esempio Atlassian SourceTree su Mac OS X).


0

Assicurati che il .gitignorefile non si ignori. Un errore comune è l'aggiunta di una *regola al .gitignorefile per ignorare tutti i file nella cartella corrente. La soluzione a questo è aggiungere un'eccezione a .gitignore:

*
!.gitignore

In questo modo tutti i file nella directory verranno ignorati, tranne .gitignore.

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.