Kiedy biegnę git reset --hard HEAD
, powinien zresetować się do nieskazitelnej wersji tego, co wyciągnąłeś, jak rozumiem. Niestety, pozostawia pliki leżące, ponieważ git status
pokazuje dużą listę nieśledzonych plików.
Jak powiedzieć gitowi „Po prostu przywróć to DOKŁADNIE, co było w ostatnim pociągnięciu, nic więcej, nic mniej”?
git reset --hard
resetuje indeks i przywraca śledzone pliki do stanu, w jakim znajdują się w HEAD. Pozostawia nieśledzone pliki w spokoju.Odpowiedzi:
Musisz użyć,
git clean -f -d
aby pozbyć się nieśledzonych plików i katalogów w kopii roboczej.Jeśli musisz zresetować całe repozytorium do master, w tym wszystkie podmoduły git, uruchom ten skrypt:
źródło
-x
jeśli chcesz usunąć pliki .gitignored i wrócić do nieskazitelnego stanu.-n
do testu zostanie najpierw usunięty. połącz je wszystkie w jeden argument:-dfn
git clean -qfdx
tutaj. Usuń wszystko i zrób to po cichu.-d -f
można decalred dwa razy-dff
za-d -f -f
to będzie usunąć wszystkie nieśledzone katalogów, w tym chronionych nieśledzonej katalogów.Jeśli masz pliki, które nadal chcesz zachować:
git clean -di
wykona interaktywne czyszczenie, które pozwoli ci usunąć tylko te pliki / katalogi, których już nie chcesz.źródło
lub zsh zapewnia alias „gpristine”:
Co jest naprawdę przydatne.
Jeśli pracujesz nad rozwidlonym repozytorium, pamiętaj, aby pobrać i zresetować z prawidłowego repozytorium / gałęzi, na przykład:
źródło
-x
podobny sposób, gdybyś właśnie sklonował repo. Jeśli tego właśnie chcesz, jest idealny. Jeśli chcesz tylko usunąć nieśledzone pliki, usunięcie tej-x
opcji działa dobrze.gpristine
Interaktywne podejście użytkownika:
-i dla interaktywnego
-f dla wymuszenia
-d dla katalogu
-x dla ignorowanych plików (dodaj, jeśli wymagane)
Uwaga: Dodaj -n lub --dry-run, aby sprawdzić, co zrobi.
źródło
Możesz użyć
git stash
. Musisz określić--include-untracked
, w przeciwnym razie skończy się oryginalny problem.Następnie po prostu upuść ostatni wpis w skrytce
Możesz dla tego zrobić przydatny alias dandysa i nazwać go
git wipe
na przykład:źródło
Polecenie, którego szukasz, to
git clean
źródło
git-clean
Służy do usuwania nieśledzonych plików z drzewa roboczego. Poniżej przedstawiono niektóre opcje (w skrócie), których można używać zgit clean
poleceniem.-d
użyj, gdy nie określono ścieżki. Więc gur recurse w niewykrytych katalogach usuń je.-f/--force
Aby usunąć zagnieżdżone pliki bez śledzenia.-i/--interactive
Pokaż, co można zrobić, i czyść pliki interaktywnie.-n/--dry-run
Pokaż, co się stanie bez usuwania czegokolwiek.-x
ignoruj plikiprzykład:
git clean -f -d
-> Usuń wszystkie nieśledzone pliki z bieżącego katalogu z wszystkich podkatalogów.źródło
Być może w pewnym momencie wykonałeś miękki reset, możesz rozwiązać ten problem, wykonując tę czynność
źródło