Jak odrzucić lokalne commity w Git?

Pracowałam nad czymś i zdecydowałam, że to totalnie przerąbane...po popełnieniu części. Wypróbowałem więc następującą sekwencję:

git reset --hard
git rebase origin
git fetch
git pull
git checkout

W którym momencie dostałem wiadomość

Your branch is ahead of 'origin/master' by 2 commits.

Chcę odrzucić moje lokalne commity , bez konieczności usuwania mojego lokalnego katalogu i ponownego pobierania wszystkiego. Jak mogę to osiągnąć?

 185
Author: Daniel C. Sobral, 2010-10-07

6 answers

git reset --hard origin/master

Usunie wszystkie commity spoza origin/master, Gdzie origin jest nazwą repo, a master jest nazwą gałęzi.

 422
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
2015-09-03 11:15:45

Na marginesie, poza odpowiedzią mipadi (która powinna działać przy okazji), powinieneś wiedzieć, że robi:

git branch -D master
git checkout master

Również robi dokładnie to, co chcesz bez having to redownload everything (twój cytat sparafrazowany). Dzieje się tak dlatego, że twój lokalny repo zawiera kopię zdalnego repo (i ta kopia nie jest taka sama jak twój lokalny katalog, nawet nie jest taka sama jak twoja sprawdzona gałąź).

Usuwanie gałęzi jest całkowicie bezpieczne, a odbudowa gałęzi jest bardzo szybka i nie wymaga żadnej sieci korki. Pamiętaj, że git jest przede wszystkim lokalnym repo z założenia. Nawet odległe oddziały mają kopię na lokalnym. Jest tylko trochę metadanych, które mówią gitowi, że konkretna lokalna kopia jest w rzeczywistości zdalną gałęzią. W git wszystkie pliki są cały czas na Twoim dysku twardym.

Jeśli nie masz żadnych gałęzi innych niż master, powinieneś:

git checkout -b 'temp'
git branch -D master
git checkout master
git branch -D temp
 26
Author: slebetman,
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-03-30 13:43:13

To, co robię, to staram się zresetować. Spowoduje to wymazanie wszystkich lokalnych commitów:

git reset --hard HEAD^
 7
Author: giang nguyen,
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-12-12 09:54:56

Musisz uruchomić

git fetch

Aby uzyskać wszystkie zmiany, a następnie nie otrzymasz wiadomości z "Twoja gałąź jest przed nami".

 4
Author: Володимир Пасіка,
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-10-30 02:39:10

Widziałem przypadki, w których zdalny stał się zsynchronizowany i musiał zostać zaktualizowany. Jeśli a reset --hard lub a branch -D nie działają, spróbuj

git pull origin
git reset --hard 
 0
Author: Jim Clouse,
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
2013-04-04 17:13:33

Musiałem zrobić:

git checkout -b master

Jak git powiedział, że to nie istnieje, ponieważ zostało wyczyszczone

git -D master
 0
Author: ramp,
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
2014-03-05 12:00:51