Mam projekt, w którym prowadziłem git init
. Po kilku zobowiązaniach zrobiłem to, git status
co powiedziało mi, że wszystko jest aktualne i nie było żadnych lokalnych zmian.
Potem wprowadziłem kilka kolejnych zmian i zdałem sobie sprawę, że chcę wszystko wyrzucić i wrócić do pierwotnego stanu. Czy to polecenie zrobi to za mnie?
git reset --hard HEAD
źródło
git checkout path/to/file
przywróci tylko lokalne zmiany dopath/to/file
git checkout .
igit reset [--hard HEAD]
nie działało, musiałemgit clean -fd
cofnąć zmiany.git reset
nie resetuje twoich zmian,git reset --hard
robi to.Uwaga: możesz także chcieć uruchomić
tak jak
będzie nie usunąć nieśledzone plików, gdzie jako git-clean usunie wszystkie pliki z katalogu głównego gąsienicowego, które nie są pod git śledzenia. OSTRZEŻENIE - UWAŻAJ TO! Pomocne jest uruchomienie najpierw suchego programu z git-clean, aby zobaczyć, co usunie.
Jest to szczególnie przydatne, gdy pojawi się komunikat o błędzie
Może się to zdarzyć, gdy wykonujesz kilka czynności, jedną z nich jest aktualizowanie kopii roboczej, gdy ty i twój przyjaciel dodaliście nowy plik o tej samej nazwie, ale najpierw przekazał go do kontroli źródła, a ty nie obchodzi cię usunięcie nieśledzonej kopii .
W tej sytuacji wykonanie suchego rozruchu pomoże również wyświetlić listę plików, które zostaną zastąpione.
źródło
Ponownie sklonuj
.gitignore
(jak pliki kompilacji).gitignore
Oto inne polecenia, o których codziennie zapominam.
Wyczyść i zresetuj
.gitignore
(jak pliki kompilacji).gitignore
Czysty
.gitignore
(jak pliki kompilacji).gitignore
Resetowanie
.gitignore
(jak pliki kompilacji).gitignore
Notatki
Przypadek testowy do potwierdzenia wszystkich powyższych (użyj bash lub sh):
Zobacz też
git revert
do dokonywania nowych zatwierdzeń, które cofają wcześniejsze zatwierdzeniagit checkout
cofnąć się w czasie do wcześniejszych zatwierdzeń (może wymagać najpierw uruchomienia powyższych poleceń)git stash
tak samo jakgit reset
powyżej, ale możesz to cofnąćźródło
git clean -f -d -x
: jeśli podano opcję -x, ignorowane pliki są również usuwane. Może to być przydatne na przykład do usunięcia wszystkich produktów kompilacji. - z dokumentów GITJeśli chcesz cofnąć wszystkie zmiany ORAZ być na bieżąco z bieżącym zdalnym urządzeniem nadrzędnym (na przykład okazuje się, że HEAD nadrzędny posunął się do przodu od momentu jego rozgałęzienia i „push” jest odrzucany), możesz użyć
źródło
origin
wgit reset --hard origin/master
(który działa) - bez niego (tj.git reset --hard
) Nic nie wydaje się być zmienione.Zajrzyj do git-reflog. Spowoduje to wyświetlenie wszystkich stanów, które pamięta (domyślnie jest to 30 dni), i możesz po prostu sprawdzić ten, który chcesz. Na przykład:
źródło
git rebase -i
poszła nie tak (skończyłem z usuwaniem niektórych błędów z powodu błędu edycji). Dzięki tej wskazówce jestem z powrotem w dobrym stanie!NIEBEZPIECZEŃSTWO WCZEŚNIEJ: (proszę przeczytać komentarze. Wykonanie polecenia zaproponowanego w mojej odpowiedzi może usunąć więcej niż chcesz)
aby całkowicie usunąć wszystkie pliki, w tym katalogi, które musiałem uruchomić
źródło
Po przeczytaniu wielu odpowiedzi i wypróbowaniu ich, znalazłem różne przypadki krawędzi, co oznacza, że czasami nie w pełni czyszczą kopię roboczą.
Oto mój obecny skrypt bash do robienia tego, co działa cały czas.
Uruchom z katalogu głównego kopii roboczej.
źródło
error: pathspec 'HEAD' did not match any file(s) known to git.
git checkout HEAD
git reset --hard
przywraca śledzone pliki (git clean -f -d
przemieszczane lub nie), usuwa nieśledzone pliki,git checkout -- HEAD
dlaczego więc tego potrzebujemy?po prostu wykonaj -
usunie wszystkie lokalne zmiany. i możesz go później użyć, wykonując -
źródło
git stash pop
automatycznie usunie najwyższą ukrytą zmianę dla Ciebiegit stash drop
aby usunąć najnowszy stan ukryty bez zastosowania do kopii roboczej.Spotkałem podobny problem. Rozwiązaniem jest
git log
sprawdzenie, która wersja zatwierdzenia lokalnego różni się od wersji zdalnej. (Np. Wersja jest3c74a11530697214cbcc4b7b98bf7a65952a34ec
).Następnie użyj,
git reset --hard 3c74a11530697214cbcc4b7b98bf7a65952a34ec
aby cofnąć zmianę.źródło
Szukałem podobnego problemu,
Chciał wyrzucić lokalne zobowiązania:
Podobnie jak poniżej:
Czek:
teraz lokalne zatwierdzenia są tracone, z powrotem do początkowego stanu sklonowania, punkt 1 powyżej.
źródło
Niekoniecznie chcesz / musisz ukryć swoje pliki robocze w katalogu roboczym, ale po prostu całkowicie się ich pozbyć. Polecenie
git clean
zrobi to za ciebie.Niektóre typowe przypadki użycia tego to usunięcie cruft , który został wygenerowany przez scalanie lub narzędzia zewnętrzne lub usunięcie innych plików, aby można było uruchomić czystą kompilację.
Pamiętaj, że będziesz bardzo ostrożny wobec tego polecenia, ponieważ służy ono do usuwania plików z lokalnego katalogu roboczego, które NIE SĄ ŚLEDZONE. jeśli nagle zmienisz zdanie po wykonaniu tej komendy, nie będziesz wracał, aby zobaczyć zawartość usuniętych plików. Alternatywą, która jest bezpieczniejsza, jest wykonanie
git stash --all
który usunie wszystko, ale zapisze to wszystko w skrytce. Ta skrytka może być później wykorzystana.
Jednak jeśli naprawdę chcesz usunąć wszystkie pliki i wyczyścić katalog roboczy, powinieneś wykonać
git clean -f -d
Spowoduje to usunięcie wszystkich plików, a także podkatalogów, które nie zawierają żadnych elementów w wyniku polecenia. Mądrą rzeczą do zrobienia przed wykonaniem
git clean -f -d
polecenia jest uruchomieniektóry pokaże podgląd tego, co zostanie usunięte po uruchomieniu
git clean -f -d
Oto podsumowanie twoich opcji od najbardziej agresywnych do najmniej agresywnych
Opcja 1 : Usuń wszystkie pliki lokalnie (najbardziej agresywne)
Opcja 2 : podgląd powyższego wpływu (podgląd najbardziej agresywny)
Opcja 3 : Ukryj wszystkie pliki (najmniej agresywne)
źródło
Wypróbuj to, aby cofnąć wszystkie zmiany niezaangażowane w oddziale lokalnym
Ale jeśli zobaczysz taki błąd:
Możesz przejść do folderu „.git”, a następnie usunąć plik index.lock:
Na koniec uruchom ponownie polecenie:
źródło
To pytanie dotyczy bardziej szerszego resetowania / przywracania repozytorium, ale w przypadku, gdy chcesz cofnąć indywidualną zmianę - dodałem tutaj podobną odpowiedź:
https://stackoverflow.com/a/60890371/2338477
Odpowiedzi na pytania:
Jak przywrócić indywidualną zmianę z zachowaniem lub bez zmian w historii git
Jak wrócić do starej wersji, aby zrestartować z tego samego stanu
źródło