Różne sposoby usuwania lokalnych zmian w Git

625

Właśnie sklonowałem repozytorium git i sprawdziłem oddział. Pracowałem nad tym, a następnie postanowiłem usunąć wszystkie moje lokalne zmiany, ponieważ chciałem oryginalnej kopii.

Krótko mówiąc, musiałem wykonać następujące dwa polecenia, aby usunąć moje lokalne zmiany

git checkout .

git clean -f

Moje pytanie brzmi,

(1) Czy jest to właściwe podejście do pozbycia się lokalnych zmian, czy proszę dać mi znać właściwe podejście.

(2) kiedy używamy, git reset --hardponieważ jestem w stanie zresetować nawet bez tego polecenia

Dzięki

* Rozwiązanie: Najważniejsze zmiany: 26/26: * Zastąpiono wiele niejasnych terminów terminologią specyficzną dla git [śledzone / nieśledzone / przemieszczane / niestopowane]

Gdy wprowadzamy zmiany lokalne, mogą istnieć tylko trzy kategorie plików:

Wpisz 1. Przeniesione śledzone pliki

Wpisz 2. Nieustalone pliki śledzenia

Typ 3. Niestabilizowane nieprześledzone pliki, zwane także nieprześledzonymi plikami

  • Staged - Te, które zostaną przeniesione do obszaru staging / Dodano do indeksu
  • Śledzone - zmodyfikowane pliki
  • UnTracked - nowe pliki. Zawsze bez sceny. Jeśli ustawione, oznacza to, że są śledzone.

Co robią poszczególne polecenia:

  1. git checkout . - Usuwa TYLKO niestabilizowane pliki śledzone [Typ 2]

  2. git clean -f - Usuwa TYLKO niestabilizowane nieśledzone pliki [Typ 3]

  3. git reset --hard - Usuwa TYLKO etapowe pliki śledzone i pliki niestacjonarne [typ 1, typ 2]

  4. git stash -u - Usuwa wszystkie zmiany [Typ 1, Typ 2, Typ 3]

Wniosek:

Oczywiste jest, że możemy użyć obu

(1) combination of `git clean -f` and `git reset --hard` 

LUB

(2) `git stash -u`

aby osiągnąć pożądany rezultat.

Uwaga: Składowanie, ponieważ słowo to oznacza „Przechowuj (coś) bezpiecznie i potajemnie w określonym miejscu”. Zawsze można to odzyskać za pomocą git stash pop. Zatem wybór pomiędzy powyższymi dwiema opcjami jest wywołaniem programisty.

Dziękuję Christoph i Frederik Schøning.

Edycja: 03/27

Pomyślałem, że warto umieścić notatkę „ strzeż sięgit clean -f

git clean -f

Nie ma powrotu. Użyj -nlub, --dry-runaby wyświetlić podgląd zadanych obrażeń.

Jeśli chcesz również usunąć katalogi, uruchom git clean -f -d

Jeśli chcesz po prostu usunąć zignorowane pliki, uruchom git clean -f -X

Jeśli chcesz usunąć zarówno pliki ignorowane, jak i niezignorowane, uruchom git clean -f -x

odniesienie: więcej na git clean: Jak usunąć lokalne (nieśledzone) pliki z bieżącego drzewa roboczego Git?

Edycja: 05/20/15

Odrzucanie wszystkich lokalnych zatwierdzeń w tym oddziale [Usuwanie lokalnych zatwierdzeń]

Aby odrzucić wszystkie zatwierdzenia lokalne w tej gałęzi, aby lokalna gałąź była identyczna z „nadrzędną” tej gałęzi, po prostu uruchom git reset --hard @{u}

Odniesienie: http://sethrobertson.github.io/GitFixUm/fixup.html

lub zrobić git reset --hard origin/master[jeśli oddział lokalny jest master]

Uwaga: 06.12.2015 To nie jest duplikat drugiego pytania SO oznaczonego jako duplikat. To pytanie dotyczy sposobu usuwania lokalnych zmian GIT [usuń dodany plik, usuń zmiany dodane do istniejącego pliku itp. Oraz różne podejścia; Gdzie w drugim wątku SO podaj tylko sposób usunięcia zatwierdzenia lokalnego. Jeśli dodałeś plik i chcesz go usunąć sam, drugi wątek SO nie dyskutuje o nim. Dlatego nie jest to duplikat drugiego]

Edycja: 23.6.2015

Jak przywrócić zatwierdzenie już przekazane do zdalnego repozytorium?

$ git revert ab12cd15

Edytuj: 09.01.2015

Usuń poprzednie zatwierdzenie z oddziału lokalnego i oddziału zdalnego

Przypadek: Właśnie dokonałeś zmiany w lokalnym oddziale i natychmiast przeszedłeś do oddziału zdalnego, Nagle zdałem sobie sprawę, O nie! Nie potrzebuję tej zmiany. Co teraz zrobić?

git reset --hard HEAD~1 [do usunięcia tego zatwierdzenia z lokalnego oddziału]

git push origin HEAD --force[oba polecenia muszą zostać wykonane. Do usunięcia ze zdalnego oddziału]

Jaka jest gałąź? Jest to obecnie sprawdzony oddział.

Edytuj 09/08/2015 - Usuń lokalne scalanie git :

Jestem w masteroddziale i połączyłem masteroddział z nowo działającym oddziałemphase2

$ git status
# On branch master

$ git merge phase2

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 8 commits.

P: Jak pozbyć się tego scalenia? Próbowałem git reset --hard i git clean -d -f oba nie działały.

Jedyne, co zadziałało, to jedno z poniższych:

$ git reset --hard origin/master

lub

$ git reset --hard HEAD~8

lub

$ git reset --hard 9a88396f51e2a068bb7 [sha commit code - ten, który był obecny, zanim nastąpiły wszystkie twoje zatwierdzenia scalania]

człowiek Pająk
źródło
1
Myślę, że ten wątek może odpowiedzieć na twoje pytania: stackoverflow.com/questions/1146973/…
Saucier
1
„git stash” usunie wszelkie dokonane zmiany.
John Ballinger
1
Ładne podsumowanie! Dodałbym inną kategorię plików: „Wpisz 4. Ignorowane pliki”. git stash -a[lub --all] ukryje również zignorowane i nieśledzone pliki. git clean -xwyczyści również zignorowane pliki. git clean -Xwyczyści tylko zignorowane pliki.
Jerry101
2
@JavaDev Twoje pytanie było bardziej jak odpowiedź .. doceń, że kontynuowałeś edycję i skompilowałeś wszystkie odpowiedzi.
Bhavuk Mathur
1
dzięki, uruchomiłem wszystkie 4 polecenia, aby cofnąć lokalne zmiany
Vincent Tang,

Odpowiedzi:

505

Wszystko zależy dokładnie od tego, co próbujesz cofnąć / przywrócić. Zacznij od przeczytania posta w linku Ube . Ale aby spróbować odpowiedzieć:

Twardy reset

git reset --hard [HEAD]

całkowicie usuń wszystkie zmiany etapowe i niestacjonarne w śledzonych plikach.

Często używam twardego resetowania, kiedy mówię „po prostu cofnij wszystko, tak jakbym wykonał całkowite ponowne klonowanie z pilota”. W twoim przypadku, gdy chcesz po prostu nieskazitelnego repo, to by zadziałało.

Czysty

git clean [-f]

Usuń pliki, które nie są śledzone.

Do usuwania plików tymczasowych, ale zachowuj zmiany etapowe i niestacjonarne w już śledzonych plikach. W większości przypadków prawdopodobnie zamiast tego robiłbym regułę ignorowania zamiast wielokrotnie czyścić - np. Dla folderów bin / obj w projekcie C #, który zwykle chciałbyś wykluczyć z repozytorium, aby zaoszczędzić miejsce lub coś w tym rodzaju.

Opcja -f (force) spowoduje również usunięcie plików, które nie są śledzone i są również ignorowane przez git przez ignore-rule. W powyższym przypadku, z regułą ignorowania, aby nigdy nie śledzić folderów bin / obj, nawet jeśli te foldery są ignorowane przez git, użycie opcji force spowoduje usunięcie ich z systemu plików. Sporadycznie widziałem takie zastosowanie, np. Podczas wdrażania skryptów, a chcesz wyczyścić kod przed wdrożeniem, skompresowaniem lub czymkolwiek innym.

Git clean nie dotyka plików, które są już śledzone.

Kasa „kropka”

git checkout .

Właściwie nigdy nie widziałem tego zapisu przed przeczytaniem twojego postu. Trudno mi znaleźć dokumentację na ten temat (może ktoś może pomóc), ale po zabawie wygląda na to, że:

„cofnij wszystkie zmiany w moim drzewku roboczym”.

Czyli cofam nieustawione zmiany w śledzonych plikach. Najwyraźniej nie dotyka on etapowych zmian i pozostawia nieśledzone pliki w spokoju.

Schowanie

Niektóre odpowiedzi wspominają o chowaniu. Jak sugeruje to sformułowanie, prawdopodobnie użyłbyś ukrywania, gdy jesteś w środku czegoś (nie jesteś gotowy na zatwierdzenie), i musisz tymczasowo zmienić gałęzie lub w jakiś sposób pracować nad innym stanem kodu, później, aby powrócić do swojego „bałaganu” biurko". Nie widzę, żeby to dotyczyło twojego pytania, ale jest zdecydowanie przydatne.

Podsumowując

Ogólnie rzecz biorąc, jeśli masz pewność, że dokonałeś (aś) zmiany, a może zepchnąłeś (-aś) się na odległe, ważne zmiany, jeśli po prostu bawisz się lub coś w tym stylu, użycie przycisku „ git reset --hard HEADnastępnie” git clean -fdefinitywnie wyczyści kod do stanu, w którym byłby, gdyby został sklonowany i wymeldowałem się z oddziału. Naprawdę ważne jest podkreślenie, że resetowanie usunie również zmiany etapowe, ale niezaangażowane. Wyczyści wszystko, co nie zostało popełnione (z wyjątkiem nieśledzonych plików, w takim przypadku użyj czystego ).

Wszystkie pozostałe polecenia mają na celu ułatwienie bardziej skomplikowanych scenariuszy, w których potrzebna jest szczegółowość „cofania rzeczy” :)

Wydaje mi się, że twoje pytanie nr 1 zostało ujęte, ale na koniec, podsumowując pytanie nr 2: powodem, dla którego nigdy nie znalazłeś potrzeby użycia, git reset --hardbyło to, że nigdy niczego nie wystawiłeś. Gdybyś dokonał zmiany, ani git checkout .nie git clean -fcofnąłby tego.

Mam nadzieję, że to obejmuje.

Frederik Struck-Schøning
źródło
Dziękujemy za przyczynę użycia git reset --hard. Wypróbowałem to i tak .. te pliki dodane do indeksu (przemieszczanie) zostały usunięte dopiero później git reset --hardi domyślnie git reset --hardjest to git reset --hard head. Ten link był także pomocny gitready.com/beginner/2009/01/18/the-staging-area.html
spiderman
Poprawiłem odpowiedź, dlaczego według mnie git stash -uma to sens.
Christoph
2
Dziękuję wam obojgu. Podsumowałem odpowiedź i umieściłem w swoim pytaniu. Christoph dał mi znać, co git stash -urobi i jak to pop, ale Frederik dał mi znać, resetuj mocno i używając kombinacji git reset --hardi git clean -f, a dlaczego nie, stashjest preferowany w niektórych scenariuszach. Teraz pomóż mi w wyborze, który powinienem oznaczyć jako odpowiedź :), obie są moimi odpowiedziami.
Spider
3
.to ścieżka określająca bieżący katalog roboczy, który może być katalogiem głównym repozytorium. Z git-scm.com: git checkout [<tree-ish>] [--] <pathspec>…aktualizuje nazwane ścieżki w drzewie roboczym z pliku indeksu lub z nazwanego <tree-ish>.
Jerry101
3
To nigdy nie wystarczy podkreślić, że zarówno git reset --harda git clean -dfxi tym podobne są destrukcyjne . W każdym razie, popraw małą headodpowiedź w odpowiedzi, powinna być albo wielka, HEADalbo w ogóle nieobecna.
Pavel Šimerda
25

Powód dodania odpowiedzi w tym momencie:

Do tej pory dodawałem wnioski i „odpowiedzi” do samego pytania początkowego, czyniąc je bardzo długim, dlatego przechodziłem do osobnej odpowiedzi.

Dodałem również częściej używane polecenia git, które pomagają mi w git, aby pomóc komuś również.

Zasadniczo do czyszczenia wszystkich lokalnych zatwierdzeń $ git reset --hardi $ git clean -d -f


Pierwszym krokiem przed dokonaniem jakichkolwiek zatwierdzeń jest skonfigurowanie nazwy użytkownika i adresu e-mail wyświetlanego wraz z zatwierdzeniem.

# Ustawia nazwę, którą chcesz dołączyć do swoich transakcji zatwierdzania

$ git config --global user.name "[name]"

# Ustawia wiadomość e-mail, którą chcesz dołączyć do swoich transakcji zatwierdzania

$ git config --global user.email "[email address]"

# Lista globalnej konfiguracji

$ git config --list

#Listuj zdalny adres URL

$ git remote show origin

#Sprawdź status

git status

# Lista wszystkich lokalnych i zdalnych oddziałów

git branch -a

# Utwórz nowy oddział lokalny i rozpocznij pracę nad tym oddziałem

git checkout -b "branchname" 

lub można to zrobić jako proces dwuetapowy

utwórz oddział: git branch branchname pracuj nad tym oddziałem:git checkout branchname

#commit zmiany lokalne [proces dwuetapowy: - Dodaj plik do indeksu, co oznacza dodanie do obszaru pomostowego. Następnie zatwierdz pliki, które są obecne w tym obszarze testowym]

git add <path to file>

git commit -m "commit message"

#checkout jakiś inny lokalny oddział

git checkout "local branch name"

#remove wszystkie zmiany w oddziale lokalnym [Załóżmy, że dokonałeś pewnych zmian w oddziale lokalnym, takich jak dodanie nowego pliku lub modyfikacja istniejącego pliku lub dokonanie lokalnego zatwierdzenia, ale nie jest to już potrzebne] git clean -d -fi git reset --hard [wyczyść wszystkie lokalne zmiany wprowadzone w oddziale lokalnym, z wyjątkiem zatwierdzenie lokalne]

git stash -u usuwa również wszystkie zmiany

Uwaga: Oczywiste jest, że możemy użyć albo (1) kombinacji git clean –d –fi git reset --hard LUB (2), git stash -u aby osiągnąć pożądany rezultat.

Uwaga 1: Składowanie, ponieważ słowo to oznacza „Przechowuj (coś) bezpiecznie i potajemnie w określonym miejscu”. Zawsze można to odzyskać za pomocą git stash pop. Zatem wybór pomiędzy powyższymi dwiema opcjami jest wywołaniem programisty.

Uwaga 2: git reset --hardusunie zmiany katalogu roboczego. Przed uruchomieniem tego polecenia pamiętaj o ukryciu wszelkich zmian lokalnych, które chcesz zachować.

# Przejdź do głównej gałęzi i upewnij się, że jesteś na bieżąco.

git checkout master

git fetch [może to być konieczne (w zależności od konfiguracji git), aby otrzymywać aktualizacje na temat źródła / wzorca]

git pull

# Scal gałąź gałęzi z gałęzią główną.

git merge feature_branch

# Zresetuj gałąź główną do stanu początkowego.

git reset origin/master

# Przypadkowo usunąłem plik z lokalnego, jak go odzyskać? Wykonaj a, git statusaby uzyskać pełną ścieżkę do pliku usuniętego zasobu

git checkout branchname <file path name>

Otóż ​​to!

# Połącz gałąź master z inną gałąź

git checkout master
git merge someotherbranchname

# nazwa lokalnego oddziału

git branch -m old-branch-name new-branch-name

# usuń oddział lokalny

git branch -D branch-name

# usuń zdalny oddział

git push origin --delete branchname

lub

git push origin :branch-name

#revert zatwierdzenie już przekazane do zdalnego repozytorium

git revert hgytyz4567

# odgałęzienie z poprzedniego zatwierdzenia za pomocą GIT

git branch branchname <sha1-of-commit>

#Zmień komunikat zatwierdzenia ostatniego zatwierdzenia, które zostało już przekazane do zdalnego

git commit --amend -m "new commit message"
git push --force origin <branch-name>

# Odrzucanie wszystkich lokalnych zatwierdzeń w tym oddziale [Usuwanie lokalnych zatwierdzeń]

Aby odrzucić wszystkie zatwierdzenia lokalne w tej gałęzi, aby lokalna gałąź była identyczna z „nadrzędną” tej gałęzi, po prostu uruchom

git reset --hard @{u}

Odniesienie: http://sethrobertson.github.io/GitFixUm/fixup.html lub wykonaj git reset --hard origin/master[jeśli oddział lokalny jest głównym]

# Cofnąć zatwierdzenie już przesłane do zdalnego repozytorium?

$ git revert ab12cd15

# Usuń poprzednie zatwierdzenie z oddziału lokalnego i oddziału zdalnego

Przypadek użycia: Właśnie zatwierdziłeś zmianę w lokalnym oddziale i natychmiast przeszedłeś do zdalnego oddziału, Nagle zdałem sobie sprawę, O nie! Nie potrzebuję tej zmiany. Co teraz zrobić?

git reset --hard HEAD~1[do usunięcia tego zatwierdzenia z lokalnego oddziału. 1 oznacza JEDEN zatwierdzony przez Ciebie]

git push origin HEAD --force[oba polecenia muszą zostać wykonane. Do usuwania ze zdalnego oddziału]. Aktualnie wyewidencjonowany oddział będzie nazywany oddziałem, w którym wykonujesz tę operację.

# Usuń niektóre ostatnie zatwierdzenia z lokalnego i zdalnego repozytorium i zachowaj żądane zatwierdzenie. (rodzaj cofania zatwierdzeń z lokalnego i zdalnego)

Załóżmy, że masz 3 zatwierdzenia przekazane do zdalnej gałęzi o nazwie „ develop

commitid-1 done at 9am
commitid-2 done at 10am
commitid-3 done at 11am. // latest commit. HEAD is current here.

Aby powrócić do starego zatwierdzenia (aby zmienić stan oddziału)

git log --oneline --decorate --graph // aby zobaczyć wszystkie swoje zatwierdzenia

git clean -d -f // wyczyść wszelkie zmiany lokalne

git reset --hard commitid-1 // lokalne przywracanie do tego pliku zatwierdzenia

git push -u origin +develop// przekaż ten stan do zdalnego. + zrobić siłę push

# Usuń lokalne scalanie git: Przypadek: Jestem w gałęzi master i połączyłem gałąź master z nowo działającą gałęzią fazy 2

$ git status

Na mistrzu oddziału

$ git merge phase2 $ git status

Na mistrzu oddziału

Twój oddział wyprzedza „origin / master” o 8 zatwierdzeń.

P: Jak pozbyć się lokalnego połączenia git? Próbowałem git reset --hardi git clean -d -foba nie działały. Jedyne, co zadziałało, to jedno z poniższych:

$ git reset - hard origin / master

lub

$ git reset - hard HEAD ~ 8

lub

$ git reset --hard 9a88396f51e2a068bb7 [sha commit code - ten, który był obecny, zanim nastąpiły wszystkie twoje zatwierdzenia scalania]

# Utwórz plik gitignore

touch .gitignore // utwórz plik w systemie Mac lub Unix

przykładowa zawartość .gitignore:

.project
*.py
.settings

Odnośnik do ściągawki GIT: https://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf

człowiek Pająk
źródło
1
Twoje polecenie usuwania zdalnego oddziału może nie być najlepsze . Używasz git push origin :branch-namejednak polecam używaniegit push origin --delete branchname
vibs2006
Zgadzam się, zaktualizowałem twoją sugestię, dziękuję @ vibs2006
spiderman
21

Podobnie jak w przypadku wszystkiego w git, istnieje wiele sposobów na zrobienie tego. Dwa użyte polecenia są jednym ze sposobów. Inną rzeczą, którą mogłeś zrobić, to po prostu schować je git stash -u. -uDaje pewność, że nowo dodane pliki (Nieśledzone) są również zawarte.

Przydaje się git stash -uto

  1. jest to prawdopodobnie najprostsze (tylko?) pojedyncze polecenie do osiągnięcia celu
  2. jeśli później zmienisz zdanie, odzyskasz całą swoją pracę git stash pop(to tak jak usunięcie wiadomości e-mail w Gmailu, gdzie możesz po prostu cofnąć, jeśli później zmienisz zdanie)

Od drugiego pytania git reset --hardnie usuniesz nieśledzonych plików, więc nadal będziesz potrzebować git clean -f. Ale git stash -umoże być najwygodniejszy.

Christoph
źródło
git reset --hardnie usunie nieśledzone pliki rzeczywiście, ale to będzie usunąć nieśledzone zmian, czyli zmiany w plikach, które są już w indeksie. Jestem pewien, że o to ci chodziło :)
Frederik Struck-Schøning
Kiedy użyłem git stash -u, zobaczyłem tę odpowiedź od git bash. "Zapisany katalog roboczy i indeks stanu WIP na {nazwa gałęzi}. Może to być ten zapisany, który moglibyśmy odzyskać git stash pop.
spiderman
Dziękuję wam obojgu. Podsumowałem odpowiedź i umieściłem w swoim pytaniu. Christoph dał mi znać, co git stash -urobi i jak to pop, ale Frederik dał mi znać, resetuj mocno i używając kombinacji git reset --hardi git clean -f, a dlaczego nie, stashjest preferowany w niektórych scenariuszach. Teraz pomóż mi w wyborze, który powinienem oznaczyć jako odpowiedź :), obie są moimi odpowiedziami.
Spider
ale co jeśli w moim repozytorium jest plik, którego nie chcę śledzić? tylko w moim repozytorium. Jeśli dodam go do listy ignorowanych, to mam plik .ignore do zatwierdzenia, który wpłynie również na wszystkich innych.
user20358,
7

1. Gdy nie chcesz w ogóle zachowywać lokalnych zmian.

git reset --hard

To polecenie całkowicie usunie wszystkie lokalne zmiany z lokalnego repozytorium. Jest to najlepszy sposób na uniknięcie konfliktów podczas polecenia ściągania, tylko jeśli nie chcesz w ogóle zachowywać lokalnych zmian.

2. Kiedy chcesz zachować lokalne zmiany

Jeśli chcesz wyciągnąć nowe zmiany ze zdalnego i zignorować zmiany lokalne podczas tego ściągania,

git stash

Przechowa wszystkie lokalne zmiany, teraz możesz pobrać zmiany zdalne,

git pull

Teraz możesz przywrócić lokalne zmiany,

git stash pop
Actung
źródło
1
git reset --hardnie usuwa wszystkich lokalnych zmian. Usuwa tylko modyfikacje. Jeśli chcesz usunąć dodaje, musisz takżegit clean -fd
John Henckel
4

Posługiwać się:

git checkout -- <file>

Aby odrzucić zmiany w katalogu roboczym.

Tadas Stasiulionis
źródło
4

Myślę, że git ma jedną rzecz, która nie jest wyraźnie udokumentowana. Myślę, że to zostało faktycznie zaniedbane.

git checkout .

Człowieku, uratowałeś mi dzień. Zawsze mam rzeczy, które chcę wypróbować przy użyciu zmodyfikowanego kodu. Ale czasem rzeczy psują zmodyfikowany kod, dodają nowe nieśledzone pliki itp. Więc chcę to zrobić, zrobić to, czego chcę, zrobić bałagan, a następnie szybko wyczyścić i zatwierdzić, jeśli jestem szczęśliwy.

Nie git clean -fddziała dobrze dla plików nieśledzonej.

Potem git resetpo prostu usuwa inscenizację, ale git checkoutjest trochę kłopotliwa. Określanie pliku jeden po drugim lub używanie katalogów nie zawsze jest idealne. Czasami zmienione pliki, których chcę się pozbyć, znajdują się w katalogach, które chcę zachować. Marzyłem o tym jednym poleceniu, które po prostu usuwa nieustawione zmiany i proszę bardzo. Dzięki.

Ale myślę, że powinni po prostu mieć git checkoutbez żadnych opcji, usunąć wszystkie nieustawione zmiany i nie dotykać inscenizacji. Jest trochę modułowy i intuicyjny. Bardziej jak to, co git resetrobi. git cleanpowinien również zrobić to samo.

Emmanuel Mahuni
źródło
2

Najlepszym sposobem jest sprawdzenie zmian.

Zmieniając plik pom.xml w projekcie o nazwie nazwa-projektu, możesz to zrobić:

git status

# modified:   project-name/pom.xml

git checkout project-name/pom.xml
git checkout master

# Checking out files: 100% (491/491), done.
# Branch master set up to track remote branch master from origin.
# Switched to a new branch 'master'
bpedroso
źródło
2

Aby odrzucić wszystko, co lubię składować i upuszczać, to jest najszybszy sposób na odrzucenie wszystkich, szczególnie jeśli pracujesz między wieloma repozytoriami.

Spowoduje to ukrycie wszystkich zmian {0}klucza i natychmiastowe usunięcie{0}

git stash && git stash drop

Tatarin
źródło
1

Przede wszystkim sprawdź, czy twoja ważna zmiana została zapisana czy nie przez:

$ git status

niż spróbować

$ git reset --hard

przywróci domyślną gałąź

ale jeśli potrzebujesz cofnąć:

$ edit (1) $ git dodaj frotz.c filfre.c $ mailx (2) $ git reset
(3) $ git pull git: //info.example.com/ nitfol


Czytaj więcej >> https://git-scm.com/docs/git-reset

Rizo
źródło
Uwaga dodatkowa: reset - polecenie hard jest niebezpieczne, spowoduje to usunięcie wszystkich zmian i nie można go cofnąć. Użytkownik powinien być świadomy, gdy używasz twardego resetowania.
danglingpointer