Jak mogę usunąć.DS przechowuje pliki z repozytorium Git?

Jak mogę usunąć te irytujące pliki Mac OS X .DS_Store z repozytorium Git?

Author: jubobs, 2008-09-20

22 answers

Usuń istniejące pliki z repozytorium:

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

Dodaj wiersz

.DS_Store

Do pliku .gitignore, który można znaleźć na najwyższym poziomie repozytorium (lub utworzyć, jeśli jeszcze go nie ma). Możesz to zrobić łatwo za pomocą tego polecenia w górnym katalogu

echo .DS_Store >> .gitignore

Then

git add .gitignore
git commit -m '.DS_Store banished!'
 1877
Author: benzado,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-09 23:59:00

Łączenie odpowiedzi benzado i webmata, aktualizowanie za pomocą git rm, nie zawodzenie na znalezionych plikach, których nie ma w repo, i zrobienie z nich wklejania ogólnego dla każdego użytkownika:

# 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
 213
Author: Turadg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-14 23:42:43

Najlepszym rozwiązaniem na rozwiązanie tego problemu jest globalne ignorowanie tych plików ze wszystkich repozytoriów git w Twoim systemie. Można to zrobić, tworząc globalny plik gitignore, taki jak:

vi ~/.gitignore_global

Dodawanie reguł ignorowania plików typu:

# 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

Teraz dodaj ten plik do globalnej konfiguracji git:

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

Edit:

Usunięto ikony, ponieważ mogą wymagać zaangażowania jako zasoby aplikacji.

 122
Author: Nerve,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-16 08:58:05

W niektórych sytuacjach możesz zignorować niektóre pliki na całym świecie. Dla mnie, .DS_Store jest jednym z nich. Oto jak:

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

(lub dowolny wybrany przez Ciebie Plik)

Następnie Edytuj plik tak jak repo .gitignore. Zauważ, że myślę, że musisz użyć ścieżki absolutnej.

 51
Author: webmat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-01 20:46:37

Musiałem zmienić git-RM na git rm w powyższym aby go uruchomić:

find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
 13
Author: David Kahn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-04 18:32:55

Jeśli nie możesz usunąć plików, ponieważ mają zmiany, użyj:

git rm --cached -f *.DS_Store
 11
Author: Reggie Pinkham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-11 21:14:25

Otwórz terminal i wpisz "cd "

  1. Usuń istniejące pliki: find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

  2. nano .gitignore

  3. Dodaj to .DS_Store

  4. Wpisz "ctrl + x"

  5. Typ " y "

  6. Wpisz aby zapisać plik

  7. git add .gitignore

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

 11
Author: Karthick Vadivel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-24 10:03:15

Usuń je za pomocą git-rm, a następnie dodaj .DS_Store do .gitignore, aby zatrzymać ich dodawanie ponownie. Możesz również użyć blueharvest , aby powstrzymać ich tworzenie razem

 8
Author: Nathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-20 10:05:35

Top voted answer is awesome, but helping out the rookies like me, here is how to create the .plik gitignore, edytuj go, Zapisz, Usuń pliki, które mogłeś już dodać do gita, a następnie wypchnij plik do Github.

Stwórz ... plik gitignore

Aby utworzyć .plik gitignore, możesz po prostu touch plik, który tworzy pusty plik o podanej nazwie. Chcemy utworzyć plik o nazwie .gitignore, więc możemy użyć polecenie:

touch .gitignore

Ignoruj pliki

Teraz musisz dodać linię, która mówi gitowi, aby zignorował pliki DS Store do twojego .gitignore. Możesz użyć edytora nano do tego celu.

nano .gitignore

Nano jest ładne, ponieważ zawiera instrukcje, jak się z niego wydostać. (Ctrl-O aby zapisać, Ctrl-X to exit)

Skopiuj i wklej kilka pomysłów z tego Github gist który wymienia niektóre wspólne pliki do zignorowania. Najważniejsze, aby odpowiedzieć na to pytanie, to:

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

# są komentarzami i pomogą Ci uporządkować plik w miarę jego wzrostu.

Ten artykuł Githuba ma również kilka ogólnych pomysłów i wytycznych.

Usuń pliki już dodane do git

Wreszcie, musisz faktycznie usunąć te pliki ze sklepu DS z katalogu.

Użyj tej wspaniałej komendy z góry głosowanej odpowiedzi. To przejdzie przez wszystkie foldery w Twoim katalogu i usuń te pliki z Gita.

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

Przyj .gitignore up to Github

Ostatni krok, musisz rzeczywiście zaangażować swój .plik gitignore.

git status

git add .gitignore

git commit -m '.DS_Store banished!'

 6
Author: Joshua Dance,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-31 06:41:27

Następujące zadziałały najlepiej dla mnie. Obsługiwane niezrównane pliki i pliki z lokalnymi modyfikacjami. Dla porównania, było to na systemie Mac 10.7 z systemem git 1.7.4.4.

Znajdź i usuń:

find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f
Ja też ignoruję .DS_Store we wszystkich repozytoriach, ustawiając globalny rdzeń.excludesfile.

Najpierw Utwórz plik (jeśli jeszcze nie istnieje):

touch ~/.gitignore

Następnie dodaj następujący wiersz i zapisz:

.DS_Store

Teraz skonfiguruj git tak, aby respektował plik "globalnie": {]}

git config --global core.excludesfile ~/.gitignore
 5
Author: jordantbro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-28 00:52:59

Znalazłem, że następujący wiersz z snippl najlepiej sprawdza się przy wycieraniu wszystkich .DS_Store, w tym taki, który ma lokalne modyfikacje.

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

-- cached option, keeps your local .DS_Store ponieważ i tak będzie powielany.

I tak jak wspomniano powyżej, dodać .DS_Store do .plik gitignore w katalogu głównym Twojego projektu. Wtedy nie będzie już w twoich oczach (repo).

 4
Author: manat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-22 04:34:18

Użyj tego polecenia, aby usunąć istniejące pliki:

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

Następnie dodaj .DS_Store do .gitignore

 4
Author: Sunny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-18 03:05:34

Jestem trochę spóźniony na imprezę, ale mam dobrą odpowiedź. Aby usunąć .Pliki DS_Store, użyj następujących poleceń z okna terminala, ale bądź bardzo ostrożny usuwając pliki za pomocą 'find'. Użycie konkretnej nazwy z opcją-name jest jednym z bezpieczniejszych sposobów jej użycia:

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

Możesz pominąć "- delete", jeśli chcesz po prostu wymienić je przed i po. To cię upewni, że ich nie ma.

W odniesieniu do~/.gitignore_global: uważaj tutaj. Chcesz aby umieścić ten ładny plik w .gitignore w najwyższy poziom każdego obszaru roboczego i zatwierdź go, aby każdy, kto sklonuje Twój repo, zyskał korzyści z jego użycia.

 2
Author: zeozod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-25 06:00:53

Z jakiegoś powodu żaden z powyższych nie działał na moim Macu.

Moje rozwiązanie pochodzi z terminala

       rm .DS_Store

Then

        git pull origin master
 1
Author: Invincible,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-10 09:06:36

Podczas inicjalizacji repozytorium pomiń polecenie git zawierające

-u
I to nie powinno być problemem.
 1
Author: dav1dhunt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-30 15:08:49

To mi się udało, zestawienie dwóch odpowiedzi z góry:

  • $ git RM --cached-f*.DS_Store
  • $ git commit-m " filter-branch --index-filter 'git RM --cached -- ignoruj-unpatch .DS_Store "
  • $ git push origin master --force
 1
Author: JLunceford,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-28 16:16:38

To zadziała:

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

Usuwa wszystkie pliki, których nazwy kończą się na .DS_Store, w tym ._.DS_Store.

 1
Author: John Topley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-06 17:28:48

W przypadku, gdy chcesz usunąć Pliki DS_Store do każdego folderu i podfolderu:


W przypadku już popełnionego DS_Store:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch

Ignoruj je przez:

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
 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-22 21:09:59
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
$ git push origin master --force
 0
Author: JZ.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-19 01:01:44

Istnieje kilka rozwiązań, aby rozwiązać ten problem. Aby uniknąć tworzenia .Pliki DS_Store, nie używaj programu OS X Finder do przeglądania folderów. Alternatywnym sposobem przeglądania folderów jest użycie uniksowej linii poleceń. Aby usunąć .Pliki DS_Store może być używany produkt innej firmy o nazwie DS_STORE Terminator. Aby usunąć .Pliki DS_Store z całego systemu można użyć polecenia powłoki Uniksa. Uruchom Terminal z aplikacji: narzędzia W wierszu polecenia powłoki UNIX wprowadź następujące polecenie UNIX: sudo find / - nazwa ".DS_Store " - depth-exec rm {} \; Po wyświetleniu monitu o podanie hasła wprowadź hasło administratora systemu Mac OS X.

Polecenie to ma na celu wyszukanie i usunięcie wszystkich wystąpień .DS_Store począwszy od głównego ( / ) systemu plików przez całą maszynę. Aby skonfigurować to polecenie do działania jako zaplanowane zadanie, wykonaj poniższe czynności: Uruchom Terminal z aplikacji: narzędzia W wierszu polecenia powłoki UNIX wprowadź następujące polecenie UNIX:

Sudo crontab-e Po wyświetleniu monitu o hasło wprowadź hasło administratora systemu Mac OS X. Raz w edytorze vi naciśnij raz literę I na klawiaturze i wpisz:

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

Nazywa się to wpisem crontab, który ma następujący format:

Polecenie Użytkownika Minute Hour DayOfMonth Month DayOfWeek.

Wpis crontab oznacza, że polecenie będzie wykonywane przez system automatycznie o godzinie 1:15 codziennie przez konto o nazwie root.

Komenda rozpoczyna się od find aż do . Jeśli system nie jest uruchomiony to polecenie nie zostanie wykonane.

Aby zapisać wpis naciśnij klawisz Esc raz, a następnie jednocześnie naciśnij Shift + z+Z.

Uwaga: informacje w kroku 4 dotyczą tylko edytora vi.

 0
Author: vinny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-01 09:54:05

Dodaj to do swojego pliku .gitignore

#Ignore folder mac
.DS_Store

Zapisz to i wykonaj commit

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

A teraz ignorujesz to dla wszystkich swoich commitów

 0
Author: Ezequiel García,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-17 17:16:39

Usuń ignorowane Pliki:

(.DS_Store)

$ find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
 0
Author: Cubiczx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-02 10:10:31