Jak usunąć plik z indeksu (= obszar pomostowy = pamięć podręczna) bez usuwania go z systemu plików?
Jak usunąć plik z indeksu (= obszar pomostowy = pamięć podręczna) bez usuwania go z systemu plików?
Odpowiedzi:
Chcesz:
git rm --cached [file]
Pominięcie tej --cachedopcji spowoduje również usunięcie jej z działającego drzewa. git rmjest nieco bezpieczniejszy niż git reset, ponieważ zostaniesz ostrzeżony, jeśli zawartość przemieszczana nie pasuje do końcówki gałęzi lub pliku na dysku. (Jeśli nie, musisz dodać --force.)
git rm --cachedaby usunąć je z repozytorium, dodać odpowiednie pliki lub katalogi do .gitignore, wyrenderować i zatwierdzić jak zwykle. Zostaną usunięte z repozytorium, ale pozostaną nietknięte w twoim lokalnym drzewie i nie będziesz ich przypadkowo sprawdzał.
Powinno to rozpakować <plik> dla Ciebie (bez usuwania lub modyfikowania pliku w inny sposób):
git reset <file>
HEAD.
HEAD!
git reset HEAD <file>
do usuwania określonego pliku z indeksu.
i
git reset HEAD
do usuwania wszystkich indeksowanych plików.
W zależności od przepływu pracy może to być coś, czego tak rzadko potrzebujesz, że nie ma sensu próbować znaleźć rozwiązania wiersza polecenia (chyba że z jakiegoś powodu pracujesz bez interfejsu graficznego).
Wystarczy użyć jednego z narzędzi opartych na graficznym interfejsie użytkownika, które obsługują zarządzanie indeksami, na przykład:
git gui <- używa frameworka okien Tk - podobny styl gitkgit cola <- bardziej nowoczesny interfejs GUIUmożliwiają one przenoszenie plików do indeksu i opuszczanie go przez wskazywanie i klikanie. Obsługują nawet wybieranie i przenoszenie części pliku (pojedyncze zmiany) do iz indeksu.
Co powiesz na inną perspektywę: Jeśli popsuniesz się podczas korzystania z jednego z sugerowanych, raczej tajemniczych poleceń:
git rm --cached [file]git reset HEAD <file>... masz prawdziwą szansę na utratę danych - a przynajmniej utrudnienie znalezienia. Chyba że naprawdę musisz to robić z bardzo wysoką częstotliwością, korzystanie z narzędzia GUI może być bezpieczniejsze .
Na podstawie komentarzy i głosów zdałem sobie sprawę, że wiele osób cały czas korzysta z indeksu. Ja nie. Oto jak:
git commit -agit commit (list of files)git commit -anastępnie wprowadź zmiany za pomocągit guigit difftool --dir-diff --tool=meldgit commit -a. Kiedy odpowiadałem na to pytanie, dzieje się tak dlatego, że zrobiłem (egzotyczny) „ odwrotny cherry pick ”, który umieszcza pliki w indeksie dla ciebie, ale chciałem edytować plik przed jego zatwierdzeniem. Wyjąłem plik z indeksu podczas edycji, aby różnice działały tak, jak kiedyś.
rmod razu, ale najpierw pomyślałem, że zmiana gałęzi nie zabije zignorowanego folderu. ale ... używam narzędzia „opartego na gui” github, które jest dla mnie wystarczająco dobre i obsługuję zarządzanie indeksem, ale nie obsługuje tego. więc co, powinienem używać 2 GUI do wąskiego użytku? wciąż nie mogę się zgodzić z odpowiedzią.