it-swarm-eu.dev

Jak mohu odebrat soubory .DS_Store z úložiště Git?

Jak mohu odstranit ty otravné soubory Mac OS X .DS_Store z úložiště Git?

1066
John Topley

Odebrat existující soubory z úložiště:

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

Přidejte řádek

.DS_Store

do souboru .gitignore, který lze nalézt na nejvyšší úrovni svého úložiště (nebo vytvořen, pokud již neexistuje). To lze snadno provést pomocí tohoto příkazu v horním adresáři

echo .DS_Store >> .gitignore

Pak

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

Kombinace odpovědí benzado a webmat, aktualizace pomocí git rm, neporušování nalezených souborů, které nejsou v repo, a jejich generování pro všechny uživatele:

# 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
228
Turadg

Nejlepším řešením tohoto problému je globálně ignorovat tyto soubory ze všech repozitářů git ve vašem systému. To lze provést vytvořením globálního souboru gitignore jako:

vi ~/.gitignore_global

Přidání pravidel pro ignorování souborů, jako jsou:

# 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

Nyní přidejte tento soubor do globálního programu git config:

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

Upravit:

Ikony byly odstraněny, protože mohou být vyžadovány jako aktiva aplikace.

133
Nerve

V některých situacích můžete také chtít některé soubory globálně ignorovat. Pro mě je .DS_Store jedním z nich. Zde je postup:

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

(Nebo jakýkoliv soubor podle vašeho výběru)

Pak upravte soubor jako repo .gitignore. Všimněte si, že musíte použít absolutní cestu.

56
webmat

Pokud se vám nepodaří soubory odebrat, protože mají změněné nastavení:

git rm --cached -f *.DS_Store
18
Reggie Pinkham

Otevřete terminál a zadejte "cd <ProjectPath>"

  1. Odebrat existující soubory: find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

  2. nano .gitignore

  3. Přidat tento .DS_Store

  4. typ "ctrl + x"

  5. Zadejte "y"

  6. Zadejte soubor, který chcete uložit

  7. git add .gitignore

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

15
Karthick Vadivel

Musel jsem změnit git-rm na git rm ve výše uvedeném, aby to fungovalo:

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

Top hlasoval odpověď je úžasné, ale pomáhat ven nováčci, jako jsem já, zde je, jak vytvořit soubor .gitignore, upravit, uložit, odstranit soubory, které jste možná již přidali do git, pak Push nahoru soubor do Github.

Vytvořte soubor .gitignore

Chcete-li vytvořit soubor .gitignore, můžete pouze touch soubor, který vytvoří prázdný soubor se zadaným názvem. Chceme vytvořit soubor s názvem .gitignore, abychom mohli použít příkaz:

touch .gitignore

Ignorovat soubory

Nyní musíte přidat řádek, který říká git, aby ignoroval DS Uložit soubory do vašeho .gitignore. K tomu můžete použít nano editor.

nano .gitignore

Nano je Nice, protože obsahuje instrukce, jak se z toho dostat. (Ctrl-O zachránit, Ctrl-X k východu)

Zkopírujte a vložte některé nápady z tohoto Github Gist , které uvádí některé společné soubory, které chcete ignorovat. Nejdůležitější z těchto otázek by bylo:

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

# Jsou komentáře, a pomůže vám uspořádat soubor, jak roste.

Tento článek Github má také některé obecné myšlenky a pokyny.

Odstraňte soubory, které již byly přidány do programu git

Nakonec musíte tyto DS soubory ze svého adresáře skutečně odebrat.

Použijte tento veliký příkaz z top hlasované odpovědi. To bude procházet všechny složky ve vašem adresáři, a odstranit tyto soubory z GIT.

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

Push .gitignore až Github

Poslední krok, musíte skutečně spáchat svůj soubor .gitignore.

git status

git add .gitignore

git commit -m '.DS_Store banished!'

14
Joshua Dance

smažte je pomocí git-rm a poté přidejte .DS_Store do .gitignore, abyste je znovu přidali. Můžete také použít blueharvest , abyste jim zabránili vytvořit všechny dohromady

10
Nathan

Tento příkaz slouží k odstranění existujících souborů:

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

Pak přidejte .DS_Store do .gitignore

8
Sunny

V případě, že chcete odstranit soubory DS_Store do každé složky a podsložky:


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

Ignorovat je:

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
7
user7718859

Pro mě to fungovalo nejlépe. Zpracované nepřiřazené soubory a soubory s místními úpravami. Pro informaci, to bylo na systému Mac 10.7 běží git 1.7.4.4.

Najít a odebrat:

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

Globálně ignoruji .DS_Store napříč všemi repozitáři nastavením globálního souboru core.excludesfile.

Nejprve vytvořte soubor (pokud ještě neexistuje):

touch ~/.gitignore

Poté přidejte následující řádek a uložte:

.DS_Store

Nyní konfigurujte soubor git tak, aby globálně respektoval soubor:

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

Zjistil jsem, že následující řádek z snipplr dělá to nejlepší na vymazání všech .DS_Store, včetně těch, které mají místní modifikace.

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

Volba --cached udržuje lokální .DS_Store, protože bude stejně reprodukována.

A stejně jako je uvedeno výše, přidejte soubor .DS_Store do souboru .gitignore v kořenovém adresáři projektu. Pak už to nebude v dohledu (repos).

6
manat

Z nějakého důvodu žádný z výše uvedených pracoval na mém mac.

Moje řešení je z terminálu:

rm .DS_Store

Potom spusťte následující příkaz:

git pull Origin master
4
Invincible

Jsem trochu pozdě, ale mám dobrou odpověď. Chcete-li odebrat soubory .DS_Store, použijte následující příkazy z okna terminálu, ale buďte velmi opatrní při mazání souborů s 'find'. Použití konkrétního názvu s volbou -name je jedním z bezpečnějších způsobů, jak jej použít:

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

"-Delete" můžete ponechat, pokud je chcete jednoduše zobrazit před a po. To vás ujistí, že jsou pryč.

S ohledem na ~/.gitignore_global radu: buďte opatrní zde. Chcete umístit tento soubor Nice do .gitignore na nejvyšší úrovni každé pracovní oblasti a zavést jej tak, aby každý, kdo klonuje vaše repo, získal prospěch z jeho použití.

4
zeozod

To bude fungovat:

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

Vymaže všechny soubory, jejichž jména končí .DS_Store, včetně ._.DS_Store.

4
John Topley

Toto fungovalo pro mě, souhrn dvou odpovědí shora:

  • $ git rm --cached -f * .DS_Store
  • $ git commit -m "filtr-větev - index-filtr 'git rm --cached --ignore-unmatch .DS_Store"
  • $ git Push Origin master --force
3
JLunceford

Při inicializaci úložiště přeskočte příkaz git, který obsahuje

-u

a nemělo by to být problém.

3
dav1dhunt

přidejte to do svého souboru .gitignore

#Ignore folder mac
.DS_Store

uložte to a proveďte závazek

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

a teď to ignorujete pro všechny vaše závazky

2
Ezequiel García
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
$ git Push Origin master --force
2
JZ.

Odebrat ignorované soubory:

(.DS_Store)

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

Existuje několik řešení, jak tento problém vyřešit. Chcete-li se vyhnout vytváření souborů .DS_Store, nepoužívejte pro prohlížení složek OS Finder OS X. Alternativním způsobem zobrazení složek je použití příkazového řádku UNIX. Chcete-li odebrat soubory .DS_Store, lze použít produkt třetí strany nazvaný Terminator DS_Store. Chcete-li odstranit soubory .DS_Store z celého systému, můžete použít příkaz UNIX Shell. Spuštění terminálu z aplikací: Nástroje V aplikaci UNIX Shell Prompt zadejte následující příkaz UNIX: Sudo find/-name ".DS_Store" -depth -exec rm {}\t Po zobrazení výzvy k zadání hesla zadejte heslo správce systému Mac OS X.

Tento příkaz je najít a odstranit všechny výskyty .DS_Store počínaje kořenem (/) systému souborů přes celý počítač. Chcete-li tento příkaz nakonfigurovat tak, aby se spouštěl jako naplánovaná úloha, postupujte podle následujících kroků: Spusťte Terminál z aplikací: Nástroje Na výzvu UNIX Shell Prompt zadejte následující příkaz UNIX:

Sudo crontab -e Po zobrazení výzvy k zadání hesla zadejte heslo správce systému Mac OS X. V editoru vi stiskněte jednou písmeno na klávesnici a zadejte následující:

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

Tato položka se nazývá crontab, která má následující formát:

Minutová hodina DayOfMonth Měsíc DayOfWeek User Command.

Záznam crontab znamená, že příkaz bude systémem proveden automaticky v 1:15 hodin denně pomocí účtu s názvem root.

Příkaz začíná od hledání až k. Pokud systém není spuštěn, tento příkaz nebude proveden.

Pro uložení záznamu stiskněte jednou klávesu Esc a pak stiskněte Shift + z + z.

Poznámka: Informace v kroku 4 platí pouze pro editor vi.

2
vinny