Domanda

Come posso rimuovere quei fastidiosi file di Mac OS X .DS_Store da un repository Git?

È stato utile?

Soluzione

Rimuovi i file esistenti dal repository:

find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

Aggiungi la linea

.DS_Store

al file .gitignore, che può essere trovato al livello superiore del repository (o creato se non è già presente). Puoi farlo facilmente con questo comando nella directory principale

echo .DS_Store >> .gitignore

Poi

git add .gitignore
git commit -m '.DS_Store banished!'

Altri suggerimenti

Combinando le risposte di benzado e webmat, aggiornando con git rm, senza errori sui file trovati che non sono in repo, e rendendolo incollabile genericamente per qualsiasi utente:

# remove any existing files from the repo, skipping over ones not in repo
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
# specify a global exclusion list
git config --global core.excludesfile ~/.gitignore
# adding .DS_Store to that list
echo .DS_Store >> ~/.gitignore

La migliore soluzione per affrontare questo problema è ignorare globalmente questi file da tutti i repository git sul tuo sistema. Questo può essere fatto creando un file gitignore globale come:

vi ~/.gitignore_global

Aggiunta di regole per ignorare file come:

# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so

# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip

# Logs and databases #
######################
*.log
*.sql
*.sqlite

# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

Ora, aggiungi questo file alla tua configurazione globale di git:

git config --global core.excludesfile ~/.gitignore_global

Modifica:

Icone rimosse in quanto potrebbe essere necessario impegnarle come risorse dell'applicazione.

In alcune situazioni potresti anche voler ignorare alcuni file a livello globale. Per me, .DS_Store è uno di questi. Ecco come:

git config --global core.excludesfile /Users/mat/.gitignore

(O qualsiasi file di tua scelta)

Quindi modifica il file come .gitignore di un repository. Nota che penso che devi usare un percorso assoluto.

Se non riesci a rimuovere i file perché presentano modifiche in fasi, usa:

git rm --cached -f *.DS_Store

Ho dovuto cambiare git-rm in git rm in sopra per farlo funzionare:

find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print

Apri terminale e digita " cd < ProjectPath & Gt; & Quot;

  1. Rimuovi i file esistenti: find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

  2. nano .gitignore

  3. Aggiungi questo .DS_Store

  4. tipo " ctrl + x "

  5. Digita "y"

  6. Invio per salvare il file

  7. git add .gitignore

  8. git commit -m '.DS_Store removed.'

La risposta più votata è fantastica, ma aiutando i principianti come me, ecco come creare il file .gitignore, modificarlo, salvarlo, rimuovere i file che potresti aver già aggiunto a git, quindi fare clic su Github.

Crea il file .gitignore

Per creare un file .gitignore, puoi semplicemente touch il file che crea un file vuoto con il nome specificato. Vogliamo creare il file denominato .gitignore in modo da poter usare il comando:

touch .gitignore

Ignora i file

Ora devi aggiungere la riga che dice a git di ignorare i file di DS Store sul tuo .gitignore. È possibile utilizzare l'editor nano per farlo.

nano .gitignore

Nano è carino perché include le istruzioni su come uscirne. ( Ctrl - O per salvare, Ctrl - X per uscire)

Copia e incolla alcune delle idee da questo Github gist che elenca alcuni file comuni da ignorare . I più importanti, per rispondere a questa domanda, sarebbero:

# OS generated files #
######################
.DS_Store
.DS_Store?

I # sono commenti e ti aiuteranno a organizzare il tuo file man mano che cresce.

Questo articolo di Github contiene anche alcune idee e linee guida generali.

Rimuovi i file già aggiunti a git

Infine, devi effettivamente rimuovere quei file di DS Store dalla tua directory.

Usa questo fantastico comando dalla risposta più votata. Questo passerà attraverso tutte le cartelle nella tua directory e rimuoverà quei file da Git.

find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

Spingi .gitignore fino a Github

Ultimo passaggio, devi effettivamente eseguire il commit del tuo file .gitignore.

git status

git add .gitignore

git commit -m '.DS_Store banished!'

eliminali utilizzando git-rm, quindi aggiungi .DS_Store a .gitignore per impedire che vengano aggiunti di nuovo. Puoi anche utilizzare blueharvest per impedire che vengano creati tutti insieme

Utilizzare questo comando per rimuovere i file esistenti:

find . -name '*.DS_Store' -type f -delete

Quindi aggiungi .DS_Store a .gitignore

Quanto segue ha funzionato meglio per me. Gestito file senza eguali e file con modifiche locali. Per riferimento, questo era su un sistema Mac 10.7 con git 1.7.4.4.

Trova e rimuovi:

find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f

Inoltre ignoro a livello globale .DS_Store in tutti i repository impostando un core.excludesfile globale.

Innanzitutto, crea il file (se non ne esiste già uno):

touch ~/.gitignore

Quindi aggiungere la seguente riga e salvare:

.DS_Store

Ora configura git per rispettare il file a livello globale:

git config --global core.excludesfile ~/.gitignore

Nel caso in cui si desidera rimuovere i file DS_Store in ogni cartella e sottocartella:


In caso di DS_Store già impegnato:

find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch

Ignorali per:

echo ".DS_Store" >> ~/.gitignore_global
echo "._.DS_Store" >> ~/.gitignore_global
echo "**/.DS_Store" >> ~/.gitignore_global
echo "**/._.DS_Store" >> ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global

Ho scoperto che la seguente riga da snipplr fa meglio a cancellare tutti .DS_Store, incluso uno che ha modifiche locali.

find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print

--cached opzione, mantiene il tuo <=> locale poiché verrà comunque riprodotto.

E proprio come menzionato sopra, aggiungi <=> al file .gitignore nella radice del tuo progetto. Quindi non sarà più alla tua vista (di pronti contro termine).

Sono un po 'in ritardo alla festa, ma ho una buona risposta. Per rimuovere i file .DS_Store, utilizzare i seguenti comandi da una finestra del terminale, ma fare molta attenzione a eliminare i file con 'trova'. L'uso di un nome specifico con l'opzione -name è uno dei modi più sicuri per usarlo:

cd directory/above/affected/workareas
find . -name .DS_Store -delete

Puoi lasciare " -delete " se vuoi semplicemente elencarli prima e dopo. Questo ti rassicurerà che se ne sono andati.

Per quanto riguarda il consiglio ~ / .gitignore_global: fai attenzione qui. Vuoi mettere quel bel file in .gitignore all'interno di livello superiore di ogni area di lavoro e impegnarlo, in modo che chiunque cloni il tuo repository possa trarre vantaggio dal suo utilizzo.

Funzionerà:

find . -name "*.DS_Store" -type f -exec git-rm {} \;

Elimina tutti i file il cui nome termina con .DS_Store, incluso ._.DS_Store.

Per qualche ragione nessuna delle precedenti ha funzionato sul mio mac.

La mia soluzione proviene dall'esecuzione del terminale:

rm .DS_Store

Quindi eseguire il comando seguente:

git pull origin master

Quando si inizializza il repository, saltare il comando git che contiene

-u

e non dovrebbe essere un problema.

Questo ha funzionato per me, una combinazione di due risposte dall'alto:

  • $ git rm --cached -f * .DS_Store
  • $ git commit -m " filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store "
  • $ git push origin master --force
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
$ git push origin master --force

Esistono alcune soluzioni per risolvere questo problema. Per evitare la creazione di file .DS_Store, non utilizzare OS X Finder per visualizzare le cartelle. Un modo alternativo per visualizzare le cartelle è utilizzare la riga di comando UNIX. Per rimuovere i file .DS_Store è possibile utilizzare un prodotto di terze parti chiamato DS_Store Terminator. Per eliminare i file .DS_Store dall'intero sistema è possibile utilizzare un comando shell UNIX. Avvia Terminal da Applicazioni: Utilità Al prompt della shell UNIX, immettere il seguente comando UNIX: sudo find / -name " .DS_Store " -depth -exec rm {} \; Quando viene richiesta una password, immettere la password dell'amministratore di Mac OS X.

Questo comando serve a trovare e rimuovere tutte le occorrenze di .DS_Store a partire dalla radice (/) del file system attraverso l'intero computer. Per configurare questo comando per l'esecuzione come attività pianificata, procedere come segue: Avvia Terminal da Applicazioni: Utilità Al prompt della shell UNIX, immettere il seguente comando UNIX:

sudo crontab -e Quando viene richiesta una password, immettere la password dell'amministratore di Mac OS X. Una volta nell'editor vi, premi una volta la lettera I sulla tastiera e inserisci quanto segue:

15 1 * * * root find / -name " .DS_Store " -depth -exec rm {} \;

Questo si chiama voce crontab, che ha il seguente formato:

Minute Hour DayOfMonth Month DayOfWeek User Command.

La voce crontab significa che il comando verrà eseguito automaticamente dal sistema ogni giorno all'1: 15 AM dall'account chiamato root.

Il comando inizia da trova fino a. Se il sistema non è in esecuzione, questo comando non verrà eseguito.

Per salvare la voce premere una volta il tasto Esc, quindi premere contemporaneamente Shift + z + z.

Nota: le informazioni nel passaggio 4 sono solo per l'editor vi.

aggiungi questo al tuo file .gitignore

#Ignore folder mac
.DS_Store

salva questo e commetti

git add -A
git commit -m "ignore .DS_Store"

e ora lo ignori per tutti i tuoi commit

Rimuovi file ignorati:

(. DS_Store)

$ find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch

Non è necessario rimuovere .DS_STORE localmente

Basta aggiungerlo al .gitignore file

  

Il file .gitignore è solo un file di testo che dice a Git quali file o cartelle ignorare in un progetto.

Comandi

  • nano .gitignore
  • Scrivi .DS_Store Quindi fai clic su CTRL+X > y > Hit Return
  • git status Per dare un'ultima occhiata alle tue modifiche
  • git add .gitignore
  • git commit -m 'YOUR COMMIT MESSAGE'
  • git push origin master
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top