Hoe kan ik .DS_Store-bestanden uit een Git-repository verwijderen?

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 touchwaardoor 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. (CtrlOom op te slaan, CtrlXom 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 >”

  1. Bestaande bestanden verwijderen:
    find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

  2. nano .gitignore

  3. Voeg deze .DS_Store

  4. toe

  5. typ “ctrl + x”

  6. Typ “y”

  7. Enter om bestand op te slaan

  8. git add .gitignore

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


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_Storetoe 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 .gitignoreom 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_Storewissen, inclusief een met lokale wijzigingen.

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

--cachedoptie, behoudt uw lokale .DS_Storeaangezien deze hoe dan ook gereproduceerd wordt.

En zoals hierboven vermeld, voeg .DS_Storetoe 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 .gitignoreom 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 .gitignoreop 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_Storelokaal 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_StoreKlik vervolgens op CTRL+X > y > Hit Return
  • git statusOm een laatste blik te werpen op uw wijzigingen
  • git 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!

Other episodes