Wprowadziłem zmiany w niektórych moich plikach w moim lokalnym repozytorium, a następnie zrobiłem to, git add -A
co, jak sądzę, dodało zbyt wiele plików do obszaru przejściowego. Jak mogę usunąć wszystkie pliki z obszaru przejściowego?
Gdy to zrobię, zrobię to ręcznie git add "filename"
.
git status
już mówi dokładnie, co należy zrobić, jeśli chcesz wyrzucić scenę z plików.git add -p
lubgit add --patch
(są takie same). Ta flaga pozwala interaktywnie wybierać pliki lub poszczególne zmiany, które chcesz wprowadzić na scenę - dzięki temu możesz uzyskać bardziej szczegółowe informacje na temat tego, co robisz w zatwierdzeniu.Odpowiedzi:
Możesz wycofać pliki z indeksu za pomocą
Podobnie
git add
, możesz wycofać pliki rekursywnie według katalogu itd. Aby wszystko odłączyć od razu, uruchom to z katalogu głównego repozytorium:Ponadto, w przyszłości, dane wyjściowe
git status
podadzą polecenia, które należy uruchomić, aby przenieść pliki z jednego stanu do drugiego.źródło
$ git reset HEAD -- .
wyprodukowanofatal: Failed to resolve 'HEAD' as a valid ref.
Zauważ, że nigdy nie dokonałem żadnego zatwierdzenia; jego pierwszygit add
pogit init
git reset @
.git reset
?@
jest synonimemHEAD
.Posługiwać się
aby cofnąć scenę z wszystkich przemieszczanych plików.
źródło
git reset HEAD --
czy jest to po prostu bardziej zwięzły sposób wykonywania tej samej operacji?HEAD
domyślnie. Jaki jest cel tych--
w twoimgit reset HEAD --
?git reset HEAD -- .
różni się tym, że resetuje tylko pliki w bieżącym katalogu i poniżej, agit reset
resetuje wszystkie pliki w projekcie.Jeśli już popełniłeś kilka niechcianych plików, możesz je wycofać i powiedzieć gitowi, aby oznaczył je jako usunięte (bez faktycznego ich usuwania) za pomocą
--cached
nakazuje mu usunięcie ścieżek ze środowiska pomostowego i indeksu bez usuwania samych plików i-r
rekursywnie działa na katalogach. Możesz następniegit add
dowolne pliki, które chcesz śledzić.źródło
rm
wycofania wszystkich plików.--cached
naprawdę przestaje śledzić pliki, które już zatwierdziłeś. Tak więc plik nie jest faktycznie usuwany, ale git uważa, że tak. Wyjaśniłem to w mojej odpowiedzi.Możesz użyć
następnie dodaj określone pliki, które chcesz
źródło
git status
powie ci, że katalog roboczy jest czysty - kłamstwa!git clean -df
wykonał swoją pracę, dzięki.git clean -df
spowoduje trwałe usunięcie plików. W systemach typu UNIX zadzwoni,unlink()
a usuniętych plików nie będzie można odzyskać.Jak zaznaczono w innych odpowiedziach, powinieneś użyć
git reset
. Spowoduje to cofnięcie działaniagit add -A
.Uwaga:
git reset
odpowiadagit reset --mixed
temuźródło
git reset filenameToNotCommit
Teraz sugeruje v2.24.0
do wycofywania plików.
źródło
Możesz zresetować obszar przemieszczania na kilka sposobów:
Zresetuj HEAD i dodaj wszystkie niezbędne pliki do odprawy ponownie, jak poniżej:
źródło
Aby usunąć wszystkie pliki z obszaru przejściowego użyj -
git reset
Aby usunąć określone użycie pliku -
git reset "File path"
źródło
posługiwać się
Spowoduje to usunięcie wszystkich plików z obszaru przejściowego
źródło
Jeśli niechciane pliki zostały dodane do obszaru przejściowego, ale nie zostały jeszcze zatwierdzone, wystarczy proste resetowanie:
Aby usunąć tylko niestabilne zmiany w bieżącym katalogu roboczym, użyj:
źródło
Użyj „
git reset HEAD <file>...
”, aby wycofać plikinp .: aby wycofać scenę z wszystkich plików
wycofać scenę z jednego pliku
źródło
Wypróbowałem wszystkie te metody, ale żadna nie działała dla mnie. Usunąłem .git plik, używając
rm -rf .git
formularz lokalne repozytorium, a następnie ponownie zrobiłgit init
igit add
i rutynowe polecenia. Zadziałało.źródło
Najlepszym sposobem na cofnięcie pliku, który jest już w obszarze testowym, jest git reset - twardy, który przywraca pliki z powrotem. Ostrożnie, to spowoduje usunięcie zmian etapowych i nieetapowych.
źródło
--hard
usuwa je na zawsze.