Ho aggiunto .DS_Store al file .gitignore, ma sembra che stia ignorando solo .DS_Store nella directory principale, non in tutte le cartelle e sottocartelle.
Come posso risolvere questo problema?
Ho aggiunto .DS_Store al file .gitignore, ma sembra che stia ignorando solo .DS_Store nella directory principale, non in tutte le cartelle e sottocartelle.
Come posso risolvere questo problema?
Risposte:
Penso che il problema che stai riscontrando sia che in alcuni commit precedenti hai aggiunto accidentalmente .DS_Store
file al repository. Naturalmente, una volta che un file viene tracciato nel tuo repository, continuerà a essere tracciato anche se corrisponde a una voce in un file .gitignore applicabile.
Devi rimuovere manualmente i .DS_Store
file che sono stati aggiunti al tuo repository. Puoi usare
git rm --cached .DS_Store
Una volta rimosso, git dovrebbe ignorarlo. Dovreste solo bisogno la seguente riga nella root .gitignore
del file: .DS_Store
. Non dimenticare il periodo!
git rm --cached .DS_Store
rimuove solo .DS_Store
dalla directory corrente. Puoi usare
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
per rimuovere tutto .DS_Stores
dal repository.
Suggerimento: dal momento che probabilmente non vuoi mai includere i .DS_Store
file, crea una regola globale. Innanzitutto, crea un .gitignore
file globale da qualche parte, ad es
echo .DS_Store >> ~/.gitignore_global
Ora dì a git di usarlo per tutti i repository:
git config --global core.excludesfile ~/.gitignore_global
Questa pagina mi ha aiutato a rispondere alla tua domanda.
Aggiungi **/.DS_Store
in .gitignore
per la sottodirectory
Se .DS_Store
già commesso:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Per ignorarli in tutti i repository: (a volte è chiamato ._.DS_Store
)
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
git rm --cached your_file
prima
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
, da: stackoverflow.com/questions/18393498/...
-f
sia necessario aggiungere se hai file aperti nelle cartelle relavent:find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Se .DS_Store non è mai stato aggiunto al tuo repository git, aggiungilo semplicemente al tuo file .gitignore.
Se non ne hai uno, crea un file chiamato
.gitignore
Nella directory principale della tua app e scrivi semplicemente
**/.DS_Store
Dentro. Ciò non consentirà mai al file .DS_Store di intrufolarsi nel tuo git.
Ma, se è già lì, scrivi nel tuo terminale:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
quindi eseguire il commit e inviare le modifiche per rimuovere .DS_Store dal repository remoto:
git commit -m "Remove .DS_Store from everywhere"
git push origin master
E ora aggiungi .DS_Store al tuo file .gitignore, quindi esegui nuovamente il commit e il push con gli ultimi 2 pezzi di codice (git commit ..., git push ...)
*
o in **
base a ciò che si desidera ottenere. È un modo per dire alla shell come navigare nelle directory. Questa risposta StackOverflow lo spiega completamente StackOverflow.com/a/28199633/4092170
Il tuo file .gitignore dovrebbe assomigliare a questo:
# Ignore Mac DS_Store files
.DS_Store
Fintanto che non includi una barra, questa viene abbinata al nome del file in tutte le directory. (da qui )
git rm --cached path/to/file/here
Passo 1, elimina tutti i *.DS_store
file. Uno può correre
git rm -f *.DS_Store
ma tieni presente che rm -f
può essere un po 'pericoloso se hai un refuso! Passaggio due: aggiungi
*.DS_Store
.DS_Store
a .gitignore. Questo ha funzionato per me!
Puoi anche aggiungere il --cached
flag alla risposta di auco per mantenere i file .DS_store locali, come menzionato da Edward Newell nella sua risposta originale. Il comando modificato è simile al seguente: find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch
..cheers e grazie!
Passaggio: 1) Rimuovere i file esistenti utilizzando questo comando
trova . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Passaggio: 2) Aggiungi .DS_Store al tuo file .gitignore
Passaggio: 3) Conferma le modifiche in .gitignore git aggiungi .gitignore git commit -m "rimosso .DS_Store"
$ git rm ./*.DS_Store
- rimuove tutto .DS_Store da git$ echo \.DS_Store >> .gitignore
- ignora .DS_Store in futuroimpegnarsi e spingere