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?
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?
Risposte:
Sicuro.
git update-index --assume-unchanged [<file> ...]
Per annullare e ricominciare il tracciamento:
git update-index --no-assume-unchanged [<file> ...]
Git 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.
--assume-unchanged
dopo la clonazione? In modo che tutti gli utenti dispongano dei file, ma non vedano le modifiche locali in diff.
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.
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.
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