Dodałem .DS_Store do pliku .gitignore, ale wygląda na to, że ignoruje on tylko .DS_Store w katalogu głównym, a nie w każdym folderze i podfolderze.
Jak to naprawić?
Dodałem .DS_Store do pliku .gitignore, ale wygląda na to, że ignoruje on tylko .DS_Store w katalogu głównym, a nie w każdym folderze i podfolderze.
Jak to naprawić?
Odpowiedzi:
Myślę, że masz problem z tym, że w niektórych wcześniejszych zmianach przypadkowo dodałeś pliki .DS_Store do repozytorium. Oczywiście, gdy plik zostanie wyśledzony w repozytorium, będzie nadal śledzony, nawet jeśli pasuje do wpisu w odpowiednim pliku .gitignore.
Musisz ręcznie usunąć pliki .DS_Store, które zostały dodane do repozytorium. Możesz użyć git rm --cached .DS_Store. Po usunięciu git powinien go zignorować. Należy trzeba następującą linię w pliku .gitignore korzeniowego tylko: .DS_Store. Nie zapomnij okresu!
git rm --cached .DS_Storeusuwa tylko .DS_Storez bieżącego katalogu. Możesz użyć, find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatchaby usunąć wszystko .DS_Storesz repozytorium.
Wskazówka: ponieważ prawdopodobnie nigdy nie chcesz dołączać plików .DS_Store, stwórz globalną regułę. Najpierw utwórz gdzieś globalny plik .gitignore, np echo .DS_Store >> ~/.gitignore_global. Teraz powiedz git go używać dla wszystkich repozytoriów: git config --global core.excludesfile ~/.gitignore_global.
Ta strona pomogła mi odpowiedzieć na twoje pytanie: https://help.github.com/articles/ignoring-files
Dodaj **/.DS_Storedo .gitignorepodkatalogu
Jeśli .DS_Storezostało już popełnione:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Aby zignorować je we wszystkich repozytoriach: (czasami o nazwie ._.DS_Store)
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
git rm --cached your_filepierwszy
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch, z: stackoverflow.com/questions/18393498/…
-fjest konieczne, jeśli masz otwarte pliki w folderach ponownego udostępnienia:find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Jeśli .DS_Store nigdy nie został dodany do Twojego repozytorium git, po prostu dodaj go do pliku .gitignore.
Jeśli go nie masz, utwórz plik o nazwie
.gitignore
W katalogu głównym aplikacji i po prostu napisz
**/.DS_Store
W tym. To nigdy nie pozwoli, aby plik .DS_Store zakradł się do twojego gita.
Ale jeśli już tam jest, napisz w swoim terminalu:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
następnie zatwierdzić i wcisnąć zmiany, aby usunąć plik .DS_Store ze zdalnego repozytorium:
git commit -m "Remove .DS_Store from everywhere"
git push origin master
A teraz dodaj .DS_Store do pliku .gitignore, a następnie ponownie zatwierdź i wypuść z 2 ostatnimi fragmentami kodu (git commit ..., git push ...)
*lub w **zależności od tego, co chcesz osiągnąć. Jest to sposób na powiedzenie powłoce, jak poruszać się po katalogach. Ta odpowiedź stackoverflow wyjaśnia to w pełni stackoverflow.com/a/28199633/4092170
Twój plik .gitignore powinien wyglądać następująco:
# Ignore Mac DS_Store files
.DS_Store
Dopóki nie dodasz ukośnika, jest on dopasowywany do nazwy pliku we wszystkich katalogach. ( stąd )
git rm --cached path/to/file/here
Krok 1, usuń wszystkie *.DS_storepliki. Można biegać
git rm -f *.DS_Store
ale pamiętaj, że rm -fmoże to być trochę niebezpieczne, jeśli masz literówkę! Krok drugi: dodaj
*.DS_Store
.DS_Store
do .gitignore. To zadziałało dla mnie!
Możesz także dodać --cachedflagę do odpowiedzi auco, aby zachować lokalne pliki .DS_store, jak wspomniał Edward Newell w swojej oryginalnej odpowiedzi. Zmodyfikowane polecenie wygląda tak: find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch..cheers i dzięki!
$ git rm ./*.DS_Store - usuń wszystkie .DS_Store z git$ echo \.DS_Store >> .gitignore - w przyszłości zignoruj .DS_Storezatwierdzaj i pchaj