with - what is gitignore




Ignora i file che sono già stati impegnati in un repository Git (14)

Ho un repository Git già inizializzato a cui ho aggiunto un file .gitignore . Come posso aggiornare l'indice del file in modo che i file che voglio ignorati vengano ignorati?


C'è un altro suggerimento forse per i ragazzi lenti come me =) Metti il ​​file .gitignore nella root del repository non nella cartella .git . Saluti!


Come dice dav_i, per mantenere il file in repo e tuttavia rimuoverlo dalle modifiche senza creare un commit extra puoi usare:

git update-index --assume-unchanged filename

Ho seguito questi passaggi

git rm -r --cached .
git add .
git reset HEAD

dopodiché, git cancella tutti i file (* .swp nel mio caso) che dovrebbero essere ignoranti.


Ho trovato uno strano problema con .gitignore. Tutto era a posto e sembrava corretto. L'unico motivo per cui il mio .gitignore era "ignorato" era che la fine della linea era in formato Mac (\ r). Quindi, dopo aver salvato il file con la terminazione di riga corretta (in vi usando: set ff = unix) tutto ha funzionato come un incantesimo!


Non sapendo bene cosa ha fatto il comando 'risposta', l'ho eseguito, con mio grande sgomento. Rimuove in modo ricorsivo ogni file dal tuo repository git.

per il salvataggio ... Come ripristinare un "git rm -r."?

git reset HEAD

Il trucco, dal momento che avevo file locali non salvati che non volevo sovrascrivere.


Per annullare la traccia di un singolo file che è già stato aggiunto / inizializzato al repository, ad esempio , interrompere il rilevamento del file ma non eliminarlo dal proprio sistema: git rm --cached filename

Per annullare la traccia di tutti i file che si trovano ora nel tuo .gitignore :

Per prima cosa commetti eventuali modifiche al codice in sospeso , quindi esegui questo comando:

git rm -r --cached .

Questo rimuove qualsiasi file modificato dall'indice (area di staging), quindi esegui semplicemente:

git add .

Impegnati:

git commit -m ".gitignore is now working"

Per annullare git rm --cached filename , usa git add filename .

Assicurati di impegnare tutte le tue importanti modifiche prima di eseguire git add . In caso contrario, si perderanno eventuali modifiche ad altri file.


Per rimuovere solo alcuni file specifici da tracciamento:

git update-index --assume-unchanged path/to/file

Se mai vuoi iniziare a seguirlo di nuovo:

git update-index --no-assume-unchanged path/to/file                      

Risposte complesse ovunque!

Basta usare il seguente

git rm -r --cached .

Rimuoverà i file che stai cercando di ignorare dall'origine e non dal master sul tuo computer!

Dopo di ciò, basta impegnarsi e spingere!


Se è necessario interrompere il tracciamento di molti file ignorati, è possibile combinare alcuni comandi:

git ls-files -i --exclude-standard | xargs -L1 git rm --cached

Questo fermerebbe il monitoraggio dei file ignorati. Se si desidera rimuovere effettivamente i file dal filesystem, non utilizzare l'opzione --cached . Puoi anche specificare una cartella per limitare la ricerca, come ad esempio:

git ls-files -i --exclude-standard -- ${FOLDER} | xargs -L1 git rm


Se i file sono già in controllo versione è necessario rimuoverli manualmente.


Se stai cercando di ignorare le modifiche a un file già tracciato nel repository (ad esempio un file dev.properties che avresti bisogno di cambiare per l'ambiente locale ma non vorresti mai controllare queste modifiche) rispetto a quello che vuoi fare è:

git update-index --assume-unchanged <file>

Se vuoi iniziare nuovamente a monitorare le modifiche

git update-index --no-assume-unchanged <file>

Vedi git-update-index (1) Pagina manuale .

skip-worktree anche un'occhiata alle skip-worktree e no-skip-worktree per update-index se avete bisogno di questo per persistere dopo un git-reset ( via )

Aggiornamento: dal momento che le persone chiedono, ecco un alias conveniente (e aggiornato dal commentato qui sotto) per vedere quali file sono attualmente "ignorati" (--assume-unchanged) nello spazio di lavoro locale

$ git config --global alias.ignored = !git ls-files -v | grep "^[[:lower:]]"

Sul mio server linux server (non vero sul mio dev mac locale), le directory vengono ignorate a condizione che non aggiunga un asterisco:

www / archives / *

Non so perché, ma mi ha fatto perdere un paio d'ore, quindi ho voluto condividere ...


Una cosa da tenere a mente anche se .gitignore non sembra ignorare i file non tracciati è che non dovresti avere commenti sulla stessa riga delle ignori. Quindi va bene

# ignore all foo.txt, foo.markdown, foo.dat, etc.
foo*

Ma questo non funzionerà:

foo*   # ignore all foo.txt, foo.markdown, foo.dat, etc.

.gitignore interpreta quest'ultimo caso come "ignora i file denominati "foo* # ignore all foo.txt, foo.markdown, foo.dat, etc." , che, naturalmente, non hai.


un altro problema che ho avuto è stato un commento in linea.

tmp/*   # ignore my tmp folder (this doesn't work)

questo funziona

# ignore my tmp folder
tmp/




git-rm