Come rimuovere i file DS_Store dal repository Git

Se usi git sulla piattaforma Mac, probabilmente ti sei imbattuto in file DS_Store in un repository git. Questi possono essere fastidiosi e ingombrare un repository git e potresti persino incorrere in conflitti non necessari a causa dei file .DS_Store mantenuti nei repository git, in cui potresti visualizzare messaggi di errore come "I file .DS_Store e .DS_Store hanno avuto un conflitto di alberi". Poiché i file .DS_Store non sono necessari nella stragrande maggioranza dei repository git e generalmente possono solo causare problemi, è ragionevole voler rimuovere i file .DS_Store dai repository git.


Innanzitutto, se ti stai chiedendo cos'è un file DS_Store, è fondamentalmente un file che contiene metadati specifici della cartella su un Mac. Pertanto, un file .DS_Store include tutto, dai metadati sul tipo di visualizzazione, dimensione di file/cartella, informazioni sulle miniature, layout delle cartelle e qualsiasi personalizzazione a livello di Finder fino a una particolare cartella sul Mac. Poiché i file .DS_Store hanno il prefisso . nel nome del file, sono invisibili al Finder (rendendoli di fatto file nascosti), ma verranno visualizzati nella riga di comando e con gli strumenti da riga di comando o i gestori di repository come git che per impostazione predefinita includeranno ogni singolo file, inclusi i file nascosti, in una directory.

Sebbene i file .DS_Store siano ovviamente utili per il Finder, non sono utili da avere in un repository git. Esaminiamo come rimuovere tutti i file DS_Store da un repository git e come impedire che vengano archiviati anche in futuri repository git.

Lettura consigliata:Correggi gli errori "avviso: impossibile accedere a /Users/Name/.config/git/attributes Permission Denied"

  1. Apri il Terminale e vai alla directory del repository git che desideri eliminare dai file .DS_Store
  2. Immettere la seguente stringa di comando:
  3. find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

Questo troverà i file .DS_Store e li rimuoverà.

Se desideri andare ancora oltre, puoi effettivamente rimuovere tutti i file DS_Store da un Mac utilizzando un'altra variante del comando trova, ma tieni presente che così facendo perderai tutte le personalizzazioni della finestra e delle cartelle del Finder, quindi non è particolarmente consigliabile seguire questa strada.

Come ignorare i file .DS_Store in git

Facciamo ora un ulteriore passo avanti e impediamo innanzitutto a git di mantenere e salvare i file DS_Store, ignorandoli invece completamente. Questo viene fatto modificando (o creando) il file .gitignore nella directory del repository attivo:

echo .DS_Store >> .gitignore

Ora ti consigliamo di aggiungere il file .gitignore al tuo repository e confermare la modifica.

git add .gitignore

git commit -m 'Ignoring .DS_Store Files'

Per quello che vale, non è solo git che può incorrere in problemi con la creazione o il disordine di file .DS_Store, o che può trarre vantaggio dall'ignorarli, puoi anche escludere i file DS_Store dagli archivi zip creati su un Mac, il che può aiutare a ridurre il disordine (e impedire che i metadati specifici della macchina) vengano conservati in un file zip. E potresti scoprire che i file .DS_Store sono odiosi con gli ambienti di rete, ma un comando predefinito può impedire la creazione di file DS_Store per i volumi di rete, se necessario.