Czy istnieje polecenie git, aby przywrócić wszystkie niezatwierdzone zmiany w działającym drzewie i indeksie, a także usunąć nowo utworzone pliki i foldery?
1071
Czy istnieje polecenie git, aby przywrócić wszystkie niezatwierdzone zmiany w działającym drzewie i indeksie, a także usunąć nowo utworzone pliki i foldery?
Odpowiedzi:
Możesz uruchomić te dwa polecenia:
źródło
git clean -i
dla trybu interaktywnego.git merge --abort
.Jeśli chcesz przywrócić zmiany tylko w bieżącym katalogu roboczym, użyj
A przedtem możesz wyświetlić listę plików, które zostaną przywrócone bez podejmowania żadnych działań, aby sprawdzić, co się stanie, za pomocą:
źródło
git reset --hard
?Użyj „git checkout - ...”, aby odrzucić zmiany w katalogu roboczym
lub
usuwa wszystkie zmiany dokonane w plikach niestacjonarnych o statusie git np
źródło
git checkout -- *
nie działa dla mnie, chyba że jestem w katalogu, w którym znajdują się zmienione pliki. Aby pobrać wszystkie pliki z całego repozytorium, musisz to zrobićgit checkout -- :/
git checkout -- *
, gwiazda jest zastąpiona przez powłokę, ze wszystkimi plikami i katalogami w bieżącym katalogu. Więc powinien przejść do podkatalogów. Mi to pasuje. Ale dzięki podkreśleniu składni „: /”, która moim zdaniem wydaje się czystsza.Jednym nietrywialnym sposobem jest uruchomienie tych dwóch poleceń:
git stash
Spowoduje to przeniesienie zmian do skrytki i powrót do stanu HEADgit stash drop
Spowoduje to usunięcie najnowszej skrytki utworzonej w ostatnim poleceniu.źródło
fatal: git-write-tree: error building trees Cannot save the current index state
nie pomogło, pozostały nowe pliki. To, co zrobiłem, to całkowite usunięcie całego działającego drzewa, a następnie
Zobacz „ Jak wyczyścić mój lokalny katalog roboczy w git? ”, Aby uzyskać porady dotyczące dodania
-x
opcji czyszczenia:Uwaga
-x
flaga usunie wszystkie pliki ignorowane przez Git, więc bądź ostrożny (zobacz dyskusję w odpowiedzi, do której się odwołuję).źródło
Myślę, że możesz użyć następującego polecenia:
git reset --hard
źródło
Pamiętaj, że nadal mogą istnieć pliki, które nie wydają się znikać - mogą być nieedytowane, ale git mógł oznaczyć je jako edytowane z powodu zmian CRLF / LF. Sprawdź, czy ostatnio wprowadziłeś jakieś zmiany
.gitattributes
.W moim przypadku dodałem ustawienia CRLF do
.gitattributes
pliku i wszystkie pliki pozostały z tego powodu na liście „zmodyfikowanych plików”. Zmiana ustawień atrybutów git spowodowała, że zniknęły.źródło
Jeśli masz niezatwierdzoną zmianę (tylko w kopii roboczej), którą chcesz przywrócić do kopii w ostatnim zatwierdzeniu, wykonaj następujące czynności:
źródło
git rm filename
i to nie działa.error: pathspec 'filename' did not match any file(s) known to git.
git rm
jestgit checkout master -- filename
Git 2.23 wprowadził
git restore
polecenie przywracania działających plików drzewa.https://git-scm.com/docs/git-restore
Aby przywrócić wszystkie pliki w bieżącym katalogu
Jeśli chcesz przywrócić wszystkie pliki źródłowe C w celu dopasowania do wersji w indeksie, możesz to zrobić
źródło
Możesz po prostu użyć następującego polecenia git, które może przywrócić wszystkie niezatwierdzone zmiany dokonane w repozytorium:
Przykład:
źródło
Zwykle używam tego sposobu, który działa dobrze:
źródło
Bezpieczna i długa droga:
git branch todelete
git checkout todelete
git add .
git commit -m "I did a bad thing, sorry"
git checkout develop
git branch -D todelete
źródło
Posługiwać się:
Na przykład:
źródło