Mam istniejący projekt Visual Studio w moim repozytorium. Niedawno dodałem plik .gitignore do mojego projektu i zakładam, że mówi Gitowi, aby zignorował pliki wymienione w tym pliku.
Mój problem polega na tym, że wszystkie te pliki są już śledzone i, o ile wiem, Git nie zignoruje pliku, który był już śledzony przed dodaniem reguły do tego pliku, aby go zignorować.
Sugerowano użycie: git rm --cached
i ręcznego ich wyśledzenia, ale zajmie mi to wieczność, aby przejrzeć je jeden po drugim.
Pomyślałem o usunięciu repozytorium i ponownym jego utworzeniu, ale tym razem z obecnym plikiem .gitignore, ale musi być lepszy sposób, aby to zrobić.
git rm --cached
całe katalogi z-r
opcją, jeśli jest to pomocneOdpowiedzi:
Ta odpowiedź rozwiązała mój problem:
Po pierwsze, zatwierdź wszystkie oczekujące zmiany.
Następnie uruchom to polecenie:
Spowoduje to usunięcie wszystkiego z indeksu, a następnie po prostu uruchom:
Zatwierdź to:
źródło
git push origin
również, aby odzwierciedlić zmiany w zdalnym repozytorium..gitignore is now working
wiadomości. :)Utwórz plik .gitignore, więc aby to zrobić, po prostu utwórz dowolny pusty plik .txt.
Następnie musisz zmienić jego nazwę, pisząc następujący wiersz na cmd (gdzie
git.txt
jest nazwa właśnie utworzonego pliku):rename git.txt .gitignore
Następnie możesz otworzyć plik i zapisać na stałe wszystkie nieśledzone pliki, które chcesz zignorować. Na przykład mój wygląda następująco:
``
GitHub oferuje całą kolekcję przydatnych plików .gitignore
Gdy już to zrobisz, musisz dodać go do repozytorium git, tak jak każdy inny plik, tyle że musi znajdować się w katalogu głównym repozytorium.
Następnie w swoim terminalu musisz napisać następujący wiersz:
git config --global core.excludesfile ~ / .gitignore_global
Od oficjalnego dokumentu:
Jeśli repozytorium już istnieje, musisz uruchomić następujące polecenia:
Jeśli krok 2 nie działa, powinieneś zapisać ścieżkę do dziury w plikach, które chcesz dodać.
źródło
Jak określono tutaj Możesz zaktualizować indeks:
W ten sposób pliki nie będą wyświetlane w
git status
lubgit diff
.Aby ponownie rozpocząć śledzenie plików, możesz uruchomić:
źródło
Jeśli dodasz swój
.gitignore
plik za późno, git będzie nadal śledził już zatwierdzone pliki, niezależnie od tego. Aby to naprawić, zawsze możesz usunąć wszystkie buforowane wystąpienia niechcianych plików.Po pierwsze, aby sprawdzić, jakie pliki faktycznie śledzisz, możesz uruchomić:
git ls-tree --name-only --full-tree -r HEAD
Powiedzmy, że znalazłeś niechciane pliki w takim katalogu
cache/
, bezpieczniej jest kierować na ten katalog zamiast na wszystkie pliki.Więc zamiast:
git rm -r --cached .
Bezpieczniej jest kierować na niechciany plik lub katalog:
git rm -r --cached cache/
Następnie dodaj wszystkie zmiany,
git add .
i popełnij ...
git commit -m ".gitignore is now working"
Odniesienie: https://amyetheredge.com/code/13.html
źródło
Oto jeden ze sposobów „wyśledzenia” plików, które w innym przypadku zostałyby zignorowane w ramach bieżącego zestawu wzorców wykluczania:
Pozostawia to pliki w katalogu roboczym, ale usuwa je z indeksu.
Sztuczka zastosowana w tym przypadku polega na dostarczeniu nieistniejącego pliku indeksu do plików git ls, aby sądził, że nie ma plików śledzonych. Powyższy kod powłoki pyta o wszystkie pliki, które byłyby ignorowane, gdyby indeks był pusty, a następnie usuwa je z rzeczywistego indeksu za pomocą git rm.
Po „wyśledzeniu” plików użyj statusu git, aby sprawdzić, czy nic ważnego nie zostało usunięte (jeśli tak, dostosuj wzorce wykluczania i użyj git reset - ścieżka, aby przywrócić usunięty wpis indeksu). Następnie dokonaj nowego zatwierdzenia, które pomija „crud”.
„Crud” nadal będzie w jakichkolwiek starych zobowiązaniach. Możesz użyć git filter-branch do stworzenia czystych wersji starych zatwierdzeń, jeśli naprawdę potrzebujesz czystej historii (nb użycie git filter-branch spowoduje „przepisanie historii”, więc nie należy tego podejmować lekko, jeśli masz współpracowników, którzy wyciągnęli którykolwiek z twoich historycznych zobowiązań po wprowadzeniu „surowości” po raz pierwszy).
źródło
Usuń pliki z obszaru przejściowego
Dodaj wszystkie zmiany
Zatwierdź to:
źródło
Myślę, że jest to łatwy sposób na dodanie pliku .gitignore do istniejącego repozytorium.
Warunek :
Potrzebujesz przeglądarki, aby uzyskać dostęp do konta github.
Kroki
Baw się dobrze!
źródło
Użyj
git clean
Uzyskaj pomoc dotyczącą tego biegu
Jeśli chcesz zobaczyć, co stanie się najpierw, upewnij się, że minął przełącznik -n, aby uruchomić na sucho:
Aby usunąć śmieci gitingnored
Uwaga: Być może ignorujesz lokalne pliki konfiguracyjne, takie jak database.yml, które również zostaną usunięte. Używaj na własne ryzyko.
Następnie
źródło