Nel quotidiano utilizzo di git per il codice dei progetti nel quale lavoriamo, per evitare di committare alcuni file o path si ricorre all’uso del file .gitignore.
Questo file contiene nomi di file, estensioni e path che permette a git di capire quali file nascondere in fase di commit, perché ritenuti non necessari ai fini del progetto.
Esempi di .gitignore possono essere file di configurazione specifici per il computer locale o file di configurazione dei vari editor di sviluppo o risultati delle compilazioni.
Questo “approccio .gitignore” è valido per elementi comuni all’interno del progetto, ma possiamo facilmente immaginare il caos che verrebbe generato se in un progetto ogni membro del team editasse file o path propri magari con path contenenti ad esempio username o altri dati futili per il progetto.
Fortunatamente git mette a disposizione delle alternative per evitare di aggiungere e committare file in maniera accidentale.
Non solo .gitignore
Ad esempio è possibile usare il file .git/info/exclude
che lavora come .gitignore sul progetto.
Qualora si volessero ignorare esoteriche estensioni di file specifici di editor o alti tool che magari uno utilizza mentre altri membri del team no allora è possibile ricorrere ad una configurazione locale a livello utente. Tramite ~/.config/git/ignore
si istruisce git affinché committi file che non vuoi che altri del team sappiano perché non di loro interesse. Così facendo è possibile lavorare all’esterno di aree che git non controlla rendendo quindi meno caotico il file .gitignore.
Ovviamente git ti permette di sapere se un file è ignorato o meno da git stesso. Il comando da utilizzare è git ls-file
in questo modo:
git ls-files --others --exclude-from=.gitignore
git ls-files --others --exclude-from=.git/info/exclude
L’argomento –others serve a mostrare i file che non sono nell’indice mentre –exclude-from è un filtro da applicare per non mostrare i file. Pertanto, la prima versione mostra quindi i file ignorati che non sono elencati nel file .gitignore.
Un altro comando utile è git check-ignore
che richiede un path come argomento. Questo comando restituisce il nome del file in caso l’elemento sia presente in uno dei file ignore.