Jak odrzucić wszystkie zmiany wprowadzone w gałęzi?

Pracuję w gałęzi (tj. design) i wprowadziłem kilka zmian, ale muszę je wszystkie wyrzucić i zresetować, aby pasowały do wersji repozytorium. Myślałem, że git checkout design to zrobi, ale to mi mówi, że jestem już w branchu design i że mam 3 zmodyfikowane pliki.

Jak odrzucić te zmiany i uzyskać gałąź w obecnej formie na zdalnym serwerze?

Author: nbro, 2011-01-28

9 answers

Uwaga: Ty nie możesz cofnąć tego.

Try git checkout -f spowoduje to odrzucenie wszelkich lokalnych zmian, które są nie popełnione w wszystkich gałęziach i master.

 225
Author: ismail,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-23 18:03:42

Git reset --hard może Ci pomóc, jeśli chcesz wyrzucić wszystko od ostatniego commita

 91
Author: gor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-15 00:33:54
git diff master > branch.diff
git apply --reverse branch.diff
 23
Author: Mike Kaganski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-28 14:04:37

Jeśli nie chcesz żadnych zmian w design i zdecydowanie chcesz, aby po prostu pasowała do gałęzi zdalnego sterowania, możesz również usunąć tę gałąź i odtworzyć ją:

# Switch to some branch other than design
$ git br -D design
$ git co -b design origin/design            # Will set up design to track origin's design branch
 19
Author: mipadi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-28 20:51:11

@Will, Git immersion to naprawdę fajny i prosty tutorial Gita. pokaże Ci, jak cofnąć zmiany w następujących przypadkach: unstaged, stsinged i committed. labs 14-18

 7
Author: Cesar A. Rivas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-28 16:01:59

Jeśli chcesz odrzucić zmiany w lokalnej gałęzi, możesz je ukryć za pomocą polecenia git stash.

Git stash save "some_name"

Twoje zmiany zostaną zapisane i możesz je odzyskać później, jeśli chcesz lub możesz je usunąć. Po wykonaniu tej czynności, twoja gałąź nie będzie miała żadnego niezatwierdzonego kodu i możesz pobrać najnowszy kod z głównej gałęzi za pomocą git pull.

 5
Author: user4948761,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-16 14:27:41

W źródłowym korzeniu: git reset ./ HEAD <--un-stage any staged changes git checkout ./ <--discard any unstaged changes

 4
Author: Clifford Harms,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-06 15:13:00

git checkout -f

To wystarczy na twoje pytanie. Jedyne, co się stało, to się stało. Nie ma cofnięcia.
 0
Author: thestar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-18 12:45:04

Odwracalna metoda usuwania wszystkich zmian:

Znalazłem to pytanie po wykonaniu połączenia i zapomnieniu o kasie rozwiń zaraz po tym. Zgadliście: zacząłem modyfikować kilka plików bezpośrednio na mistrz. D ' Oh! Ponieważ moja sytuacja nie jest wyjątkowa (wszyscy to zrobiliśmy, prawda; ->), zaproponuję odwracalny sposób, w jaki odrzuciłem wszystkie zmiany, aby uzyskać mistrz wygląda jak rozwiń jeszcze raz.

Po wykonaniu git diff aby zobaczyć, jakie pliki zostały zmodyfikowane i ocenić zakres mojego błędu, wykonałem:

git stash
git stash clear

Po pierwszym przechowywaniu wszystkich zmian, zostały one następnie wyczyszczone. Wszystkie zmiany wprowadzone w plikach w wyniku błędu do mistrz zniknęły, a parytet został przywrócony.

Powiedzmy, że teraz chciałem przywrócić te zmiany. Dam radę. Pierwszy krok to znalezienie hasha skrytki, którą właśnie wyczyściłem / upuściłem: {]}
git fsck --no-reflog | awk '/dangling commit/ {print $3}'

Po zapoznaniu się z hash, I udało się przywrócić niezatwierdzone zmiany za pomocą:

git stash apply hash-of-cleared-stash

Tak naprawdę nie chciałem przywracać tych zmian, chciałem tylko potwierdzić, że mogę je odzyskać, więc wyczyściłem je ponownie.

Inną opcją jest zastosowanie skrytki do innej gałęzi , zamiast wymazywania zmian. Więc jeśli chodzi o usuwanie zmian wprowadzonych podczas pracy na niewłaściwej gałęzi, stash daje Ci dużą elastyczność, aby odzyskać swoje boo-boo.

Anyhoo, if you want a reversible means of czyszczenie zmian w gałęzi, powyższy sposób jest mniej niebezpieczny w tym przypadku użycia.

 0
Author: F1Linux,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-07 11:21:32