Hoe kan ik die vervelende Mac OS X .DS_Store
-bestanden uit een Git-repository verwijderen?
Antwoord 1, autoriteit 100%
Bestaande bestanden uit de repository verwijderen:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Voeg deze regel toe:
.DS_Store
naar het bestand .gitignore
, dat je op het hoogste niveau van je repository kunt vinden (of maak het bestand als het er nog niet is). U kunt dit eenvoudig doen met dit commando in de bovenste map:
echo .DS_Store >> .gitignore
Bevestig het bestand vervolgens in de repo:
git add .gitignore
git commit -m '.DS_Store banished!'
Antwoord 2, autoriteit 9%
De antwoorden van benzado en webmat combineren, bijwerken met git rm
, niet falen bij gevonden bestanden die niet in de repo staan, en het generiek plakbaar maken voor elke gebruiker:
# 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
Antwoord 3, autoriteit 6%
De beste oplossing om dit probleem aan te pakken is om deze bestanden globaal te negeren van alle git-repo’s op je systeem. Dit kan gedaan worden door een globaal gitignore-bestand te maken zoals:
vi ~/.gitignore_global
Regels toevoegen voor het negeren van bestanden zoals:
# 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
Voeg nu dit bestand toe aan je globale git-configuratie:
git config --global core.excludesfile ~/.gitignore_global
Bewerken:
Pictogrammen verwijderd omdat ze mogelijk moeten worden vastgelegd als app-items.
Antwoord 4, autoriteit 2%
In sommige situaties wil je misschien ook bepaalde bestanden globaal negeren. Voor mij is .DS_Store er een van. Hier is hoe:
git config --global core.excludesfile /Users/mat/.gitignore
(Of een ander bestand naar keuze)
Bewerk het bestand vervolgens net als de .gitignore van een repo. Merk op dat ik denk dat je een absoluut pad moet gebruiken.
Antwoord 5
Als u de bestanden niet kunt verwijderen omdat ze wijzigingen hebben gefaseerd gebruik:
git rm --cached -f *.DS_Store
Antwoord 6
Het meest gestemde antwoord is geweldig, maar om de rookies zoals ik te helpen, hier is hoe je het .gitignore-bestand kunt maken, bewerken, opslaan, de bestanden verwijderen die je mogelijk al aan git hebt toegevoegd, en vervolgens het bestand naar Github.
Maak het .gitignore-bestand
Om een .gitignore-bestand te maken, kun je het bestand touch
waardoor een leeg bestand met de opgegeven naam wordt gemaakt. We willen het bestand met de naam .gitignore maken, zodat we het commando kunnen gebruiken:
touch .gitignore
Negeer de bestanden
Nu moet je de regel die git vertelt om de DS Store-bestanden te negeren toevoegen aan je .gitignore. U kunt hiervoor de nano-editor gebruiken.
nano .gitignore
Nano is leuk omdat het instructies bevat om eruit te komen. (Ctrl–Oom op te slaan, Ctrl–Xom af te sluiten)
Kopieer en plak enkele van de ideeën uit deze Github gistwaarin enkele veelvoorkomende bestanden worden vermeld die moeten worden genegeerd . De belangrijkste om deze vraag te beantwoorden, zijn:
# OS generated files #
######################
.DS_Store
.DS_Store?
De # zijn opmerkingen en helpen u uw bestand te ordenen naarmate het groeit.
Dit Github-artikelbevat ook enkele algemene ideeën en richtlijnen.
Verwijder de bestanden die al aan git zijn toegevoegd
Ten slotte moet u die DS Store-bestanden daadwerkelijk uit uw directory verwijderen.
Gebruik deze geweldige opdracht van het meest gestemde antwoord. Dit doorloopt alle mappen in je directory en verwijdert die bestanden uit git.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Duw .gitignore naar Github
Laatste stap, je moet je .gitignore-bestand daadwerkelijk committen.
git status
git add .gitignore
git commit -m '.DS_Store banished!'
Antwoord 7
Open terminal en typ “cd < ProjectPath >”
-
Bestaande bestanden verwijderen:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
-
nano .gitignore
-
Voeg deze
.DS_Store
-
typ “ctrl + x”
-
Typ “y”
-
Enter om bestand op te slaan
-
git add .gitignore
-
git commit -m '.DS_Store removed.'
toe
Antwoord 8
Ik moest git-rm in het bovenstaande veranderen in git rm om het werkend te krijgen:
find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
Antwoord 9
Gebruik deze opdracht om de bestaande bestanden te verwijderen:
find . -name '*.DS_Store' -type f -delete
Voeg vervolgens .DS_Store
toe aan .gitignore
Antwoord 10
Als u DS_Store-bestanden naar elke map en submap wilt verwijderen:
In het geval van reeds vastgelegde DS_Store:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Negeer ze door:
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
Antwoord 11
verwijder ze met git-rm
, en voeg dan .DS_Store toe aan .gitignore
om te voorkomen dat ze opnieuw worden toegevoegd. Je kunt ook blueharvestgebruiken om te voorkomen dat ze allemaal tegelijk worden gemaakt
Antwoord 12
De beste manier om voor altijd van dit bestand af te komen en je er nooit meer zorgen over te hoeven maken is
maak een globaal .gitignore-bestand:
echo .DS_Store >> ~/.gitignore_global
En laat git weten dat je dit bestand voor al je repositories wilt gebruiken:
git config –global core.excludesfile ~/.gitignore_global
En dat is het! .DS_Store is uit de weg.
Antwoord 13
Het volgende werkte het beste voor mij. Behandelde ongeëvenaarde bestanden en bestanden met lokale wijzigingen. Ter referentie, dit was op een Mac 10.7-systeem met git 1.7.4.4.
Zoeken en verwijderen:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f
Ik negeer ook globaal .DS_Store in alle repositories door een globaal core.excludesfile in te stellen.
Maak eerst het bestand (als dat nog niet bestaat):
touch ~/.gitignore
Voeg vervolgens de volgende regel toe en sla op:
.DS_Store
Configureer nu git om het bestand globaal te respecteren:
git config --global core.excludesfile ~/.gitignore
Antwoord 14
Ik ben een beetje laat op het feest, maar ik heb een goed antwoord.
Om de .DS_Store-bestanden te verwijderen, gebruikt u de volgende opdrachten vanuit een terminalvenster, maar wees zeer voorzichtig met het verwijderen van bestanden met ‘find’. Het gebruik van een specifieke naam met de optie -name is een van de veiligere manieren om het te gebruiken:
cd directory/above/affected/workareas
find . -name .DS_Store -delete
Je kunt de “-delete” weglaten als je ze gewoon ervoor en erna wilt vermelden. Dat zal je geruststellen dat ze weg zijn.
Met betrekking tot het ~/.gitignore_global advies: wees hier voorzichtig.
Je wilt dat mooie bestand in .gitignore plaatsen in de
hoogste niveau van elk werkgebied en zet het vast, zodat iedereen die uw repo klonen zal profiteren van het gebruik ervan.
Antwoord 15
Ik ontdekte dat de volgende regel van snipplr kan het beste alle .DS_Store
wissen, inclusief een met lokale wijzigingen.
find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print
--cached
optie, behoudt uw lokale .DS_Store
aangezien deze hoe dan ook gereproduceerd wordt.
En zoals hierboven vermeld, voeg .DS_Store
toe aan het .gitignore-bestand in de hoofdmap van je project. Dan is het niet meer in uw zicht (van repo’s).
Antwoord 16
Soms zijn .DS_Store-bestanden aanwezig in een externe repository, maar niet zichtbaar in uw lokale projectmappen. Om dit op te lossen, moeten we alle bestanden in de cache verwijderen en opnieuw toevoegen.
Stap 1:Voeg dit toe aan het .gitignore-bestand.
# Ignore Mac DS_Store files
.DS_Store
**/.DS_Store
Stap 2:Verwijder de bestanden in de cache en voeg ze opnieuw toe met behulp van deze opdrachten.
git rm -r --cached .
git add .
git commit -am "Removed git ignored files"
git push -f origin master
Antwoord 17
Dit werkt:
find . -name "*.DS_Store" -type f -exec git-rm {} \;
Het verwijdert alle bestanden waarvan de naam eindigt op .DS_Store
, inclusief ._.DS_Store
.
Antwoord 18
Om de een of andere reden werkte geen van bovenstaande op mijn mac.
Mijn oplossing is van de terminal run:
rm .DS_Store
Voer vervolgens het volgende commando uit:
git pull origin master
Antwoord 19
Sla bij het initialiseren van uw repository het git-commando over dat
. bevat
-u
en het zou geen probleem moeten zijn.
Antwoord 20
Dit werkte voor mij, combinatie van twee antwoorden van hierboven:
- $ 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
Antwoord 21
Verwijder genegeerde bestanden:
(.DS_Store)
$ find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Antwoord 22
Stap 1
Hiermee wordt elk .DS_Store
-bestand in een map verwijderd (inclusief submappen)
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Stap 2
Voeg dit toe aan .gitignore
om te voorkomen dat DS_Store-bestanden in de hoofdmap enelke submapnaar git gaan!
**/.DS_Store
Van de git-documenten:
- Een voorloop “**” gevolgd door een schuine streep betekent overeenkomst in alle mappen. Bijvoorbeeld, “**/foo” komt overal overeen met bestand of map “foo”, hetzelfde als patroon “foo”. “**/foo/bar” komt overeen met bestand of map “bar” overal direct onder map “foo”.
Antwoord 23
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
$ git push origin master --force
Antwoord 24
voeg dit toe aan je bestand .gitignore
#Ignore folder mac
.DS_Store
opslaan en commit doen
git add -A
git commit -m "ignore .DS_Store"
en nu negeer je dit voor al je commits
Antwoord 25
maak een .gitignore
-bestand met het commando touch .gitignore
en voeg de volgende regels toe
.DS_Store
Sla het bestand .gitignore
op en druk het vervolgens in je git-repo.
Antwoord 26
Er zijn een paar oplossingen om dit probleem op te lossen.
Om te voorkomen dat u .DS_Store-bestanden maakt, moet u de OS X Finder niet gebruiken om mappen te bekijken. Een alternatieve manier om mappen te bekijken is door de UNIX-opdrachtregel te gebruiken.
Om de .DS_Store-bestanden te verwijderen, kan een product van een derde partij met de naam DS_Store Terminator worden gebruikt.
Om de .DS_Store-bestanden van het hele systeem te verwijderen, kan een UNIX-shell-opdracht worden gebruikt.
Start Terminal vanuit Toepassingen:Hulpprogramma’s
Voer bij de UNIX-shell-prompt de volgende UNIX-opdracht in:
sudo find / -name “.DS_Store” – depth -exec rm {} \;
Wanneer u om een wachtwoord wordt gevraagd, voert u het Mac OS X-beheerderswachtwoord in.
Deze opdracht is om alle exemplaren van .DS_Store te vinden en te verwijderen vanaf de root (/) van het bestandssysteem door de hele machine.
Volg de onderstaande stappen om deze opdracht te configureren om als een geplande taak te worden uitgevoerd:
Start Terminal vanuit Toepassingen:Hulpprogramma’s
Voer bij de UNIX-shell-prompt het volgende UNIX-commando in:
sudo crontab -e
Wanneer u om een wachtwoord wordt gevraagd, voert u het Mac OS X-beheerderswachtwoord in.
Eenmaal in de vi-editor drukt u eenmaal op de letter I op uw toetsenbord en voert u het volgende in:
15 1 * * * root find / -name “.DS_Store” – depth -exec rm {} \;
Dit wordt crontab-invoer genoemd, die de volgende indeling heeft:
Minuten uur DayOfMonth Maand DayOfWeek Gebruikerscommando.
Het crontab-item betekent dat de opdracht elke dag automatisch om 01:15 uur door het systeem wordt uitgevoerd door het account met de naam root.
De opdracht begint van find helemaal tot . Als het systeem niet actief is, wordt deze opdracht niet uitgevoerd.
Om de invoer op te slaan, drukt u eenmaal op de Esc-toets en vervolgens tegelijkertijd op Shift + z+ z.
Opmerking: informatie in stap 4 is alleen voor de vi-editor.
Antwoord 27
Het is niet nodig om .DS_Store
lokaal te verwijderen
Voeg het gewoon toe aan het .gitignore
-bestand
Het .gitignore-bestand is slechts een tekstbestand dat Git vertelt welke bestanden of mappen in een project moeten worden genegeerd.
Opdrachten
nano .gitignore
- Schrijf
.DS_Store
Klik vervolgens opCTRL+X > y > Hit Return
git status
Om een laatste blik te werpen op uw wijzigingengit add .gitignore
git commit -m 'YOUR COMMIT MESSAGE'
git push origin master
Antwoord 28
Ik heb gemaakt:
git checkout -- ../.DS_Store
(# Lokale wijzigingen (permanent) in een bestand negeren)
En het werkte goed!