do pliku .gitignore, który można znaleźć na najwyższym poziomie repozytorium (lub utworzyć, jeśli jeszcze go nie ma). Możesz to łatwo zrobić za pomocą tego polecenia w głównym katalogu
To naprawdę trywialne, ale użycie -execuruchomi się git-rmraz dla każdego pliku .DS_Store, podczas gdy xargsumieści wszystkie ścieżki w jednym wierszu poleceń. Przede wszystkim wolę, xargsponieważ nie muszę się martwić ucieczką przed wieloma postaciami specjalnymi.
@Andrew: Nie zgadzam się. Nigdy nie przydałby się plik .DS_Store do zaewidencjonowania, dlatego jest bardziej sensowny jako ustawienie dla wszystkich użytkowników w całym repozytorium, niż coś, o czym każdy użytkownik Maca musi pamiętać na swoim własnym komputerze.
benzado
51
Czy dodawanie .DS_Storedo .gitignorepracy rekurencyjnie? Czy to również zignoruje some/level/of/folders/.DS_Store?
Charlie Schliesser
70
@CharlieS Tak, jeśli wzorzec nie zawiera ukośnika, jest dopasowywany do nazwy pliku we wszystkich katalogach.
benzado
239
Łącząc odpowiedzi benzado i webmat, aktualizując git rm, nie zawodząc na plikach, które nie znajdują się w repozytorium, i czyniąc go ogólnie możliwym do wklejenia 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
Odkryłem, że podczas korzystania z repozytorium git w moim katalogu domowym (AKA repozytorium „dotfiles”), posiadanie ~/.gitignorejako mojego globalnego pliku wykluczeń jest uciążliwe. Istnieją pliki, które chcę wykluczyć z mojego katalogu domowego, których nie chcę ignorować globalnie. Używam ~/.gitexcludeszamiast tego za pomocą tej samej dyrektywy:core.excludesfile
AL X
155
Najlepszym rozwiązaniem tego problemu jest globalne ignorowanie tych plików ze wszystkich repozytoriów git w systemie. Można to zrobić, tworząc globalny plik gitignore, taki jak:
vi ~/.gitignore_global
Dodawanie reguł ignorowania plików takich jak:
# 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 swojej globalnej konfiguracji git:
Możesz także dodać powyższe reguły w .gitignore swojego repozytorium. Pozwoliłoby to utrzymać te pliki na poziomie repozytorium, jeśli w projekcie jest wielu współpracowników. Jednak w takich przypadkach .gitignore powinien obsługiwać określone pliki każdego systemu operacyjnego itp., Jeśli różni programiści używają innego systemu operacyjnego. Podobnie jak zasady dla Linuksa, OSX itp.
Nerve
Polecam, aby każdy programista zajął się plikami specyficznymi dla systemu operacyjnego we własnym pliku .global_ignore, w ten sposób projekt .gitignore jest specyficzny dla projektu.
mcfedr
należy uruchomić: git dodać .gitignore_global, aby inni programiści mieli również ten plik w swoim lokalnym środowisku?
stackdave
58
W niektórych sytuacjach możesz też chcieć zignorować niektóre pliki globalnie. Dla mnie .DS_Store jest jednym z nich. Oto jak:
nano .gitignoretworzy plik, jeśli nie jest obecny, to polecenie należy wykonać z folderu głównego projektu
Saif
17
Najczęściej głosowana odpowiedź jest niesamowita, ale pomagając nowicjuszom takim jak ja, oto jak utworzyć plik .gitignore, edytować go, zapisać, usunąć pliki, które mogłeś już dodać do git, a następnie przesłać plik do Github.
Utwórz plik .gitignore
Aby utworzyć plik .gitignore, możesz po prostu touchplik, który tworzy pusty plik o określonej nazwie. Chcemy utworzyć plik o nazwie .gitignore, abyśmy mogli użyć polecenia:
touch .gitignore
Zignoruj pliki
Teraz musisz dodać wiersz, który mówi git, aby zignorował pliki DS Store do twojego .gitignore. Aby to zrobić, możesz użyć edytora nano.
nano .gitignore
Nano jest fajny, ponieważ zawiera instrukcje, jak się z niego wydostać. ( Ctrl- Oaby zapisać, Ctrl- Xaby wyjść)
Skopiuj i wklej niektóre pomysły z tej listy Github, która zawiera listę popularnych plików do zignorowania. Najważniejsze, aby odpowiedzieć na to pytanie, to:
# OS generated files #
######################
.DS_Store
.DS_Store?
# To komentarze i pomogą ci uporządkować plik w miarę jego wzrostu.
Na koniec musisz usunąć pliki DS Store z katalogu.
Użyj tego wspaniałego polecenia z najlepiej głosowanej odpowiedzi. Spowoduje to przejrzenie wszystkich folderów w katalogu i usunięcie tych plików z git.
usuń je za pomocą git-rm, a następnie dodaj .DS_Store, .gitignoreaby zatrzymać dodawanie. Możesz także użyć blueharvest, aby powstrzymać ich od stworzenia wszystkich razem
Poniższe działało dla mnie najlepiej. Obsługiwane niepasujące pliki oraz pliki z lokalnymi modyfikacjami. Dla porównania było to w systemie Mac 10.7 z systemem git 1.7.4.4.
--cachedopcja, zachowuje lokalny, .DS_Storeponieważ i tak zostanie odtworzony.
I tak jak wspomniano powyżej, dodaj .DS_Storedo pliku .gitignore w katalogu głównym swojego projektu. Wtedy nie będzie już w twoim zasięgu (repozytoriów).
Jestem trochę spóźniony na przyjęcie, ale mam dobrą odpowiedź. Aby usunąć pliki .DS_Store, użyj następujących poleceń z okna terminala, ale zachowaj ostrożność, usuwając pliki za pomocą polecenia „znajdź”. Używanie określonej 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ąć opcję „-delete”, jeśli chcesz po prostu wymienić je przed i po. To zapewni cię, że ich nie ma.
W odniesieniu do porady ~ / .gitignore_global: bądź ostrożny tutaj. Chcesz umieścić ten ładny plik w .gitignore na najwyższym poziomie każdego workarea i zatwierdzić go, aby każdy, kto klonuje twoje repo, skorzystałby z jego użycia.
Istnieje kilka rozwiązań tego problemu. Aby uniknąć tworzenia plików .DS_Store, nie używaj wyszukiwarki OS X do przeglądania folderów. Alternatywnym sposobem przeglądania folderów jest użycie wiersza poleceń UNIX. Aby usunąć pliki .DS_Store, można użyć produktu innej firmy o nazwie DS_Store Terminator. Aby usunąć pliki .DS_Store z całego systemu, można użyć polecenia powłoki UNIX. Uruchom terminal z aplikacji: Narzędzia W wierszu poleceń powłoki UNIX wpisz następującą komendę UNIX: sudo find / -name ".DS_Store" -depth -exec rm {} \; Po wyświetleniu monitu o podanie hasła wprowadź hasło administratora Mac OS X.
To polecenie służy do wyszukiwania i usuwania wszystkich wystąpień pliku .DS_Store, zaczynając od katalogu głównego (/) systemu plików na całym komputerze. Aby skonfigurować to polecenie, aby było uruchamiane jako zaplanowane zadanie, wykonaj następujące czynności: Uruchom terminal z aplikacji: Narzędzia W wierszu poleceń powłoki UNIX wprowadź następujące polecenie UNIX:
sudo crontab -e Gdy pojawi się monit o hasło, wprowadź hasło administratora Mac OS X. W edytorze vi naciśnij raz literę I na klawiaturze i wprowadź następujące informacje:
Odpowiedzi:
Usuń istniejące pliki z repozytorium:
Dodaj linię
do pliku
.gitignore
, który można znaleźć na najwyższym poziomie repozytorium (lub utworzyć, jeśli jeszcze go nie ma). Możesz to łatwo zrobić za pomocą tego polecenia w głównym kataloguNastępnie
źródło
-exec
uruchomi sięgit-rm
raz dla każdego pliku .DS_Store, podczas gdyxargs
umieści wszystkie ścieżki w jednym wierszu poleceń. Przede wszystkim wolę,xargs
ponieważ nie muszę się martwić ucieczką przed wieloma postaciami specjalnymi..DS_Store
do.gitignore
pracy rekurencyjnie? Czy to również zignorujesome/level/of/folders/.DS_Store
?Łącząc odpowiedzi benzado i webmat, aktualizując
git rm
, nie zawodząc na plikach, które nie znajdują się w repozytorium, i czyniąc go ogólnie możliwym do wklejenia dla każdego użytkownika:źródło
~/.gitignore
jako mojego globalnego pliku wykluczeń jest uciążliwe. Istnieją pliki, które chcę wykluczyć z mojego katalogu domowego, których nie chcę ignorować globalnie. Używam~/.gitexcludes
zamiast tego za pomocą tej samej dyrektywy:core.excludesfile
Najlepszym rozwiązaniem tego problemu jest globalne ignorowanie tych plików ze wszystkich repozytoriów git w systemie. Można to zrobić, tworząc globalny plik gitignore, taki jak:
Dodawanie reguł ignorowania plików takich jak:
Teraz dodaj ten plik do swojej globalnej konfiguracji git:
Edytować:
Usunięto ikony, ponieważ mogą być konieczne zatwierdzenie ich jako zasobów aplikacji.
źródło
W niektórych sytuacjach możesz też chcieć zignorować niektóre pliki globalnie. Dla mnie .DS_Store jest jednym z nich. Oto jak:
(Lub dowolny wybrany plik)
Następnie edytuj plik tak jak .gitignore repozytorium. Zauważ, że myślę, że musisz użyć absolutnej ścieżki.
źródło
Jeśli nie możesz usunąć plików, ponieważ mają one wprowadzone zmiany, użyj:
źródło
Otwórz terminal i wpisz „cd <ProjectPath>”
Usuń istniejące pliki:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
nano .gitignore
Dodaj
.DS_Store
wpisz „ctrl + x”
Wpisz „y”
Wprowadź, aby zapisać plik
git add .gitignore
git commit -m '.DS_Store removed.'
źródło
nano .gitignore
tworzy plik, jeśli nie jest obecny, to polecenie należy wykonać z folderu głównego projektuNajczęściej głosowana odpowiedź jest niesamowita, ale pomagając nowicjuszom takim jak ja, oto jak utworzyć plik .gitignore, edytować go, zapisać, usunąć pliki, które mogłeś już dodać do git, a następnie przesłać plik do Github.
Utwórz plik .gitignore
Aby utworzyć plik .gitignore, możesz po prostu
touch
plik, który tworzy pusty plik o określonej nazwie. Chcemy utworzyć plik o nazwie .gitignore, abyśmy mogli użyć polecenia:touch .gitignore
Zignoruj pliki
Teraz musisz dodać wiersz, który mówi git, aby zignorował pliki DS Store do twojego .gitignore. Aby to zrobić, możesz użyć edytora nano.
nano .gitignore
Nano jest fajny, ponieważ zawiera instrukcje, jak się z niego wydostać. ( Ctrl- Oaby zapisać, Ctrl- Xaby wyjść)
Skopiuj i wklej niektóre pomysły z tej listy Github, która zawiera listę popularnych plików do zignorowania. Najważniejsze, aby odpowiedzieć na to pytanie, to:
# To komentarze i pomogą ci uporządkować plik w miarę jego wzrostu.
W tym artykule Github znajdują się także ogólne pomysły i wytyczne.
Usuń pliki już dodane do git
Na koniec musisz usunąć pliki DS Store z katalogu.
Użyj tego wspaniałego polecenia z najlepiej głosowanej odpowiedzi. Spowoduje to przejrzenie wszystkich folderów w katalogu i usunięcie tych plików z git.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Wciśnij .gitignore w górę do Github
Ostatnim krokiem jest zatwierdzenie pliku .gitignore.
git status
git add .gitignore
git commit -m '.DS_Store banished!'
źródło
Musiałem zmienić git-rm na git rm w powyższym celu, aby działał:
źródło
usuń je za pomocą
git-rm
, a następnie dodaj .DS_Store,.gitignore
aby zatrzymać dodawanie. Możesz także użyć blueharvest, aby powstrzymać ich od stworzenia wszystkich razemźródło
Jeśli chcesz usunąć pliki DS_Store do każdego folderu i podfolderu:
W przypadku już zatwierdzonego sklepu DS_Store:
Zignoruj je przez:
źródło
Poniższe działało dla mnie najlepiej. Obsługiwane niepasujące pliki oraz pliki z lokalnymi modyfikacjami. Dla porównania było to w systemie Mac 10.7 z systemem git 1.7.4.4.
Znajdź i usuń:
Globalnie ignoruję również .DS_Store we wszystkich repozytoriach, ustawiając globalny plik core.excludes.
Najpierw utwórz plik (jeśli jeszcze nie istnieje):
Następnie dodaj następujący wiersz i zapisz:
Teraz skonfiguruj git, aby globalnie szanował plik:
źródło
Użyj tego polecenia, aby usunąć istniejące pliki:
Następnie dodaj
.DS_Store
do.gitignore
źródło
Odkryłem, że następujący wiersz z snipplr najlepiej czyści wszystko
.DS_Store
, w tym ten, który ma lokalne modyfikacje.--cached
opcja, zachowuje lokalny,.DS_Store
ponieważ i tak zostanie odtworzony.I tak jak wspomniano powyżej, dodaj
.DS_Store
do pliku .gitignore w katalogu głównym swojego projektu. Wtedy nie będzie już w twoim zasięgu (repozytoriów).źródło
Jestem trochę spóźniony na przyjęcie, ale mam dobrą odpowiedź. Aby usunąć pliki .DS_Store, użyj następujących poleceń z okna terminala, ale zachowaj ostrożność, usuwając pliki za pomocą polecenia „znajdź”. Używanie określonej nazwy z opcją -name jest jednym z bezpieczniejszych sposobów jej użycia:
Możesz pominąć opcję „-delete”, jeśli chcesz po prostu wymienić je przed i po. To zapewni cię, że ich nie ma.
W odniesieniu do porady ~ / .gitignore_global: bądź ostrożny tutaj. Chcesz umieścić ten ładny plik w .gitignore na najwyższym poziomie każdego workarea i zatwierdzić go, aby każdy, kto klonuje twoje repo, skorzystałby z jego użycia.
źródło
To zadziała:
Usuwa wszystkie pliki, których nazwy kończą się
.DS_Store
, w tym._.DS_Store
.źródło
"*.DS_Store"
, aby gwiazdka była przekazywana dofind
powłoki zamiast rozszerzana przez nią.Z jakiegoś powodu żadne z powyższych nie działało na moim komputerze Mac.
Moje rozwiązanie pochodzi z terminalu:
Następnie uruchom następujące polecenie:
źródło
źródło
Podczas inicjowania repozytorium pomiń zawierające go polecenie git
i nie powinno to stanowić problemu.
źródło
To zadziałało dla mnie, połączenie dwóch odpowiedzi z góry:
źródło
Usuń zignorowane pliki:
(.DS_Store)
źródło
Istnieje kilka rozwiązań tego problemu. Aby uniknąć tworzenia plików .DS_Store, nie używaj wyszukiwarki OS X do przeglądania folderów. Alternatywnym sposobem przeglądania folderów jest użycie wiersza poleceń UNIX. Aby usunąć pliki .DS_Store, można użyć produktu innej firmy o nazwie DS_Store Terminator. Aby usunąć pliki .DS_Store z całego systemu, można użyć polecenia powłoki UNIX. Uruchom terminal z aplikacji: Narzędzia W wierszu poleceń powłoki UNIX wpisz następującą komendę UNIX: sudo find / -name ".DS_Store" -depth -exec rm {} \; Po wyświetleniu monitu o podanie hasła wprowadź hasło administratora Mac OS X.
To polecenie służy do wyszukiwania i usuwania wszystkich wystąpień pliku .DS_Store, zaczynając od katalogu głównego (/) systemu plików na całym komputerze. Aby skonfigurować to polecenie, aby było uruchamiane jako zaplanowane zadanie, wykonaj następujące czynności: Uruchom terminal z aplikacji: Narzędzia W wierszu poleceń powłoki UNIX wprowadź następujące polecenie UNIX:
sudo crontab -e Gdy pojawi się monit o hasło, wprowadź hasło administratora Mac OS X. W edytorze vi naciśnij raz literę I na klawiaturze i wprowadź następujące informacje:
15 1 * * * root find / -name ".DS_Store" -depth -exec rm {} \;
Nazywa się to wpisem crontab, który ma następujący format:
Minute Hour DayOfMonth Month DayOfWeek Polecenie użytkownika.
Wpis crontab oznacza, że polecenie będzie wykonywane automatycznie przez system codziennie o 01:15 przez konto o nazwie root.
Polecenie zaczyna się od find aż do. Jeśli system nie działa, polecenie to nie zostanie wykonane.
Aby zapisać wpis, naciśnij raz klawisz Esc, a następnie jednocześnie naciśnij Shift + z + z.
Uwaga: informacje w kroku 4 dotyczą wyłącznie edytora vi.
źródło
dodaj to do pliku .gitignore
zapisz to i dokonaj zatwierdzenia
a teraz ignorujecie to dla wszystkich swoich zobowiązań
źródło
utwórz
.gitignore
plik za pomocą poleceniatouch .gitignore
i dodaj w nim następujące wiersze
zapisz
.gitignore
plik, a następnie wepchnij go do repozytorium git.źródło
Najlepszym sposobem, aby pozbyć się tego pliku na zawsze i nigdy więcej nie martwić się o to
utwórz globalny plik .gitignore:
echo .DS_Store >> ~ / .gitignore_global
Poinformuj gita, że chcesz użyć tego pliku dla wszystkich swoich repozytoriów:
git config --global core.excludesfile ~ / .gitignore_global I to wszystko! .DS_Store jest na twojej drodze.
źródło
Nie trzeba usuwać
.DS_STORE
lokalniePo prostu dodaj go do
.gitignore
plikuPolecenia
nano .gitignore
.DS_Store
Następnie kliknijCTRL+X > y > Hit Return
git status
Aby zobaczyć ostatnie zmianygit add .gitignore
git commit -m 'YOUR COMMIT MESSAGE'
git push origin master
źródło