Usuwanie folderu z git tracking

Muszę wykluczyć folder (uploady nazw) ze śledzenia. I tried to run

git rm -r --cached wordpress/wp-content/uploads

A potem dodałem ścieżkę do .gitignore

/wordpress/wp-content/uploads

Ale kiedy biegł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 robię źle?

Ja też próbowałem

git update-index --assume-unchanged <file>

Ale to wydaje się usuwać tylko pliki. Ale muszę usunąć cały folder (w tym podfoldery) z namierzam.

 210
Author: ROMANIA_engineer, 2014-06-18

5 answers

Natknąłem się na to pytanie podczas googlowania "git remove folder from tracking". Pytanie OP prowadzi mnie do odpowiedzi. Podsumuję to tutaj dla przyszłych pokoleń.

Pytanie

Jak usunąć folder z repozytorium git bez usuwania go z lokalnego komputera (np. środowiska programistycznego)?

Odpowiedź

Krok 1. Dodaj ścieżkę folderu do głównego pliku repo .gitignore.

path_to_your_folder/
Krok 2. Usuń folder z twojego local Git tracking, ale trzymaj go na dysku.
git rm -r --cached path_to_your_folder/
Krok 3. Wypchnij zmiany do repo git.

Folder zostanie uznany za "usunięty" z punktu widzenia Gita (tzn. jest w przeszłości, ale nie w najnowszym commicie, a osoby pobierające z tego repo otrzymają pliki usunięte ze swoich drzew), ale pozostaną w Twoim katalogu roboczym, ponieważ użyłeś --cached.

 463
Author: Tod Birdsall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-21 07:34:02

To działa dla mnie:

git rm -r --cached --ignore-unmatch folder_name

--ignore-unmatch jest tu ważne, bez tej opcji git zakończy działanie z błędem na pierwszym pliku, który nie znajduje się w indeksie.

 10
Author: qed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-18 11:57:49

Aby zapomnieć katalog rekurencyjnie dodaj /*/* do ścieżki:

git update-index --assume-unchanged wordpress/wp-content/uploads/*/*

Używanie git rm --cached nie jest dobre do współpracy. Więcej szczegółów tutaj: Jak zatrzymać śledzenie i zignorować zmiany w pliku w Git?

 4
Author: vitalets,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-03 15:44:21

Z dokumentacji git:

Inną przydatną rzeczą, którą możesz chcieć zrobić, jest utrzymanie pliku w drzewie roboczym, ale usunięcie 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 swojego .plik gitignore i przypadkowo zainscenizowany, jak duży plik dziennika lub kilka .skompilowane pliki. Aby to zrobić, użyj opcji --cached:

$ git rm --cached readme.txt

Więc może nie włączasz "- r"?

 2
Author: user3750325,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-18 16:23:48

Krok 2.5: zatwierdź zmiany:

>git commit

Jeśli naciskasz, nie robiąc tego wcześniej, to nic nie robi!

 1
Author: M.H.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-04 19:05:51