Muszę wykluczyć folder (przesyłanie nazw) ze śledzenia. Próbowałem biec
git rm -r --cached wordpress/wp-content/uploads
a potem dodałem ścieżkę do .gitignore
/wordpress/wp-content/uploads
ale kiedy uruchomiłem git status
, pojawiają się jako usunięte. Jeśli spróbuję zatwierdzić zmiany, pliki zostaną usunięte, a nie tylko usunięte ze śledzenia.
Co ja robię źle?
Próbowałem też
git update-index --assume-unchanged <file>
ale wydaje się, że wyśledzić tylko pliki. Ale muszę usunąć cały folder (w tym podfoldery) ze śledzenia.
reset --hard
, będzie.pull
popełnisz gdzie indziej, pliki te zostaną usunięte z nowego systemu.Odpowiedzi:
Natknąłem się na to pytanie podczas wyszukiwania w Google dla „git usuń folder ze śledzenia”. Pytanie OP doprowadziło mnie do odpowiedzi. Podsumowuję to tutaj dla przyszłych pokoleń.
Pytanie
Jak usunąć folder z mojego repozytorium git bez usuwania go z mojego komputera lokalnego (tj. Środowiska programistycznego)?
Odpowiedź
Krok 1. Dodaj ścieżkę folderu do głównego
.gitignore
pliku repozytorium .Krok 2. Usuń folder z lokalnego śledzenia git, ale zachowaj go na dysku.
Krok 3. Prześlij zmiany do repozytorium git.
Folder zostanie uznany za „usunięty” z punktu widzenia Git (tzn. Znajdują się w przeszłości, ale nie w najnowszym zatwierdzeniu, a osoby korzystające z tego repozytorium zostaną usunięte z drzew), ale pozostaną w katalogu roboczym ponieważ używałeś
--cached
.źródło
To działa dla mnie:
--ignore-unmatch
jest tutaj ważne, bez tej opcji git zakończy działanie z błędem w pierwszym pliku spoza indeksu.źródło
unknown option 'ignore unmatched'
git rm -r --cached --ignore-unmatch .idea/*.xml
Aby zapomnieć katalog rekurencyjnie dodaj
/*/*
do ścieżki:Korzystanie
git rm --cached
nie jest dobre do współpracy. Więcej informacji tutaj: Jak zatrzymać śledzenie i zignorować zmiany w pliku w Git?źródło
Wiem, że to stary wątek, ale chciałem tylko trochę dodać, ponieważ oznaczone rozwiązanie nie rozwiązało problemu (chociaż próbowałem wiele razy).
Jedynym sposobem, w jaki mogłem zatrzymać śledzenie folderu w git formularzu, było wykonanie następujących czynności:
git rm -r --cached your_folder/
your_folder/
do .gitignorePowinieneś teraz zobaczyć, że folder nie jest już śledzony.
Nie pytaj mnie, dlaczego samo wyczyszczenie pamięci podręcznej nie zadziałało, nie jestem super czarodziejem Git, ale tak rozwiązałem problem.
źródło
Z dokumentacji git:
Inną przydatną rzeczą, którą możesz chcieć zrobić, to zachować plik w drzewie roboczym, ale usunąć go z obszaru przejściowego. Innymi słowy, możesz chcieć zachować plik na dysku twardym, ale Git już go nie śledzi. Jest to szczególnie przydatne, jeśli zapomniałeś dodać coś do pliku .gitignore i przypadkowo go zainscenizował, na przykład duży plik dziennika lub kilka skompilowanych plików .a. Aby to zrobić, użyj opcji --cached:
Więc może nie dołączasz „-r”?
źródło
--cached
.-r
Opcja jest dla „rekursywnego”, które powinny być zawarte w tej instancji.