Git: ignora i file tracciati


182

Ho alcuni file tracciati in un repository che vengono automaticamente modificati durante la creazione del codice. Non voglio rintracciarli, non voglio che appaiano modificati e non voglio che vengano messi in scena quando aggiungo.

È possibile?



5
Se questi file vengono generati automaticamente dalla build, non devono essere tracciati in git.
Codebling

Ecco un breve tutorial su gitignore che potresti trovare utile: learningpassion.wordpress.com/2016/06/06/17/…
Joker,

Risposte:


283

Sicuro.

git update-index --assume-unchanged [<file> ...]

Per annullare e ricominciare il tracciamento:

git update-index --no-assume-unchanged [<file> ...]

3
Cosa succede ai file in questo stato quando si inseriscono delle modifiche?
Hymansfield,

2
@haymansfield la pagina di aiuto per il comando dice quanto segueGit will fail (gracefully) in case it needs to modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is changed upstream, you will need to handle the situation manually.
Parham

3
Qualche modo per fare domanda --assume-unchangeddopo la clonazione? In modo che tutti gli utenti dispongano dei file, ma non vedano le modifiche locali in diff.
Gauthier,

10
@Tyler - no, una volta che un file viene rintracciato da git verrà sempre tracciato, anche se quel file appare in .gitignore. Il mio caso d'uso è qualcosa del tipo "ecco un modello base di un file in cui archiviare le tue credenziali, ora non impegnarlo mai".
Jon V,

5
@watbywbarif Ho il comando git update-index --no-assume-unchanged $(git ls-files $(git rev-parse --show-toplevel))impostato come alias git. Ogni volta che sospetto sia uno di questi shenanigans, lo faccio e basta.
Philippe Carphin,

6

Un altro approccio (da una risposta ora cancellata di Seth Robertson, ma l'ho trovato utile per farlo risorgere) è quello di mantenere un file modello "monitorato", quindi di avere una versione locale non tracciata, ad esempio: "config.sample.ini" o " config.ini.template "vedi https://gist.github.com/canton7/1423106 per un esempio completo.

Quindi non ci saranno problemi se il file viene modificato in git, ecc. E puoi usare .gitignore (finalmente) sui file locali non tracciati.


5

Un'altra soluzione che utilizza gli attributi git e% f nel comando filtro:

git config filter.orig.clean "cat %f.orig"
cp filename filename.orig
echo "filename filter=orig" >> .git/info/attributes
echo "filename.orig" >> .git/info/exclude

16
Potresti fornire maggiori dettagli su ciò che questo significa e cosa sta facendo per caso?
rogerdpack,

questo aggiunge un filtro per il file che legge il contenuto dal file ".orig" con testo originale
koct9i
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.