W katalogu głównym mojego projektu mam foo
folder. Wewnątrz foo
folderu mam bar
folder. Chciałbym zignorować wszystkie zmiany we wszystkich plikach w moim bar
folderze. Mam to w moim gitignore
:
/foo/bar
Folder jest zaznaczony: istnieje i zawiera pliki do zignorowania. gitignore
jest commit
ted. Jednak mam plik, w którym wykonuję modyfikację i znajduje się w moim bar
folderze. Kiedy piszę
git status
wewnątrz mojego git bash
widzę plik, który powinien zostać zignorowany. Jaki może być powód i jak z powodzeniem zignorować wszystkie pliki w folderze mojego paska?
Zauważ, że pliki były wcześniej ignorowane z tą samą linią, ale musiałem tymczasowo usunąć tę linię do commit
czegoś na serwerze. Po zakończeniu commit
umieściłem linię z powrotem w gitignore
. To było jakiś czas temu, ale teraz zauważyłem, że pliki będą w formacie git status
. Spodziewałbym się, że będę mógł modyfikować ignorowane pliki bez pojawiania się w git status
.
git add -f ignored-file
doda plik, nawet jeśli jest w twoich ignorowaniach.git status foo/bar/file-that-should-be-ignored
daje?git log foo/bar/file-that-should-be-ignored
. Jeśli nie powinien być częścią repozytorium, powinieneś go usunąć,git rm --cached foo/bar/file-that-should-be-ignored
a następnie zatwierdzić zgodnie z sugestią Reck poniżej (chociaż zrobiłbym to po prostu na pliku, a nie na całym folderze). Spowoduje to (a) usunięcie pliku z Gita, (b) zachowanie pliku w lokalnej kopii i (c) usunięcie pliku, gdy innifetch
lubpull
nowe zatwierdzenie.Odpowiedzi:
Zgaduję, że ten folder został już wcześniej sprawdzony w git?
Uruchom
git rm -r --cached <folder>
i sprawdź ponownie.źródło
git update-index --assume-unchanged <folder>
być może?Dla mnie zaakceptowana odpowiedź była częścią rozwiązania, a nie całym rozwiązaniem. Być może inne kroki, które zamierzam opublikować, były oczywiste, ale najpierw je przegapiłem. Oto kroki, które podjąłem, aby upewnić się, że mój
.gitignore
plik zignorował folder, który chciałem, aby zignorował:git rm -r --cached .
(które usuwa wszystko z indeksu git w celu odświeżenia repozytorium git)git add .
(aby dodać wszystko z powrotem do repozytorium)git commit -m ".gitignore Fixed"
Link do artykułu, z którego znalazłem rozwiązanie, znajdziesz tutaj .
źródło
Miałem ten problem i zdałem sobie sprawę, że git właściwie ignorował pliki / foldery, ale mój edytor kodu (Visual Studio Code) był po prostu błędny i nie „wyszarzał” ich poprawnie na pasku bocznym interfejsu użytkownika. Zrestartowałem VSCode i zgodnie z oczekiwaniami były wyszarzone.
źródło
Jako dodatek do zaakceptowanej odpowiedzi
Kiedy to robię, terminal wyświetla kilka
rm
plików w tym katalogu. Aby zapobiec kolejnemu zatwierdzeniu, które może niepotrzebnie wpłynąć na pilota, zrobiłem:Po tym, to nic nie powiedział do popełniania i kiedy modyfikowanie plików wewnątrz
/foo/bar/
i zrobićgit status
i jeszcze dostaćnothing to commit
.źródło