Jak wrócić do najnowszej wersji w Git?
Niedawno przeniosłem się z SVN do Git i jestem trochę zdezorientowany. Musiałem uruchomić poprzednią wersję skryptu przez debugger, więc zrobiłem git checkout <previous version hash>
i zrobiłem to, co musiałem.
git log
, nie widzę tego.
Jak mogę to zrobić? Czy jest też łatwiejszy sposób na zmianę wersji niż wpisywanie hashów - coś w stylu "wróć do dwóch wersji" lub " przejdź do najbardziej chronologicznie najnowsze"? 9 answers
git checkout master
powinno wystarczyć. Aby cofnąć się do dwóch wersji, można powiedzieć coś w stylu git checkout HEAD~2
, ale lepiej utworzyć tymczasową gałąź opartą na tym czasie, więc git checkout -b temp_branch HEAD~2
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
2010-08-24 17:17:29
Kiedy dokonujesz transakcji na konkretny commit, git tworzy oddzielną gałąź. Więc jeśli zadzwonisz:
$ git branch
Zobaczysz coś w stylu:
* (detached from 3i4j25)
master
other_branch
Aby wrócić do master branch head, wystarczy ponownie przejść do master branch:
$ git checkout master
To polecenie automatycznie usunie oddzieloną gałąź.
Jeśli git checkout
nie działa prawdopodobnie masz zmodyfikowane pliki sprzeczne między gałęziami. Aby zapobiec utracie kodu git wymaga od Ciebie pliki. Masz trzy opcje:
-
Schowaj swoje modyfikacje (możesz je później wrzucić):
$ git stash
-
Odrzuć zmiany resetując gałąź odłączoną:
$ git reset --hard
-
Utwórz nową gałąź z poprzednimi modyfikacjami i zatwierdź je:
$ git checkout -b my_new_branch $ git add my_file.ext $ git commit -m "My cool msg"
Po tym możesz wrócić do swojej gałęzi master (najnowsza wersja):
$ git checkout master
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-01-09 12:04:08
To mi pomogło (nadal byłem na gałęzi master):
Git reset --hard origin / master
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-08-01 14:13:47
Dopiero zaczynam kopać głębiej w git, więc nie jestem pewien, czy dobrze rozumiem, ale myślę, że poprawną odpowiedzią na pytanie OP jest to, że możesz uruchomić git log --all
ze specyfikacją formatu jak Ta: git log --all --pretty=format:'%h: %s %d'
. Oznacza to aktualną wersję jako (HEAD)
i możesz po prostu pobrać następną z listy.
BTW, dodaj taki alias do swojego .gitconfig
z nieco lepszym formatem i możesz uruchomić git hist --all
:
hist = log --pretty=format:\"%h %ai | %s%d [%an]\" --graph
Jeśli chodzi o wersje względne, znalazłem to post , ale mówi tylko o starszych wersjach, prawdopodobnie nie ma co się odnosić do nowszych wersji.
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-05-23 12:18:27
Możesz sprawdzić używając nazw gałęzi, po pierwsze.
Wiem, że jest kilka sposobów na poruszanie głową, ale zostawię to ekspertowi Gita, aby je wyliczył.
Chciałem tylko zasugerować gitk --all
-- uznałem to za niezmiernie pomocne, gdy zaczynałem od Gita.
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
2010-08-24 17:20:43
Aby powrócić do najnowszej wersji:
git checkout <branch-name>
Na przykład, git checkout master
lub git checkout dev
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-11-10 19:35:08
Kiedy wrócisz do poprzedniej wersji,
$ git checkout HEAD~2
Previous HEAD position was 363a8d7... Fixed a bug #32
Możesz zobaczyć swój log funkcji(hash) za pomocą tego polecenia nawet w tej sytuacji;
$ git log master --oneline -5
4b5f9c2 Fixed a bug #34
9820632 Fixed a bug #33
...
master
może być zastąpiona inną nazwą gałęzi.
Następnie zamów go, będziesz mógł wrócić do funkcji.
$ git checkout 4b5f9c2
HEAD is now at 4b5f9c2... Fixed a bug #34
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-05-10 01:13:53
Bardziej eleganckim i prostym rozwiązaniem jest użycie
git stash
Powróci do najbardziej wybrednej lokalnej wersji gałęzi, a także zapisze Twoje zmiany w stashu, więc jeśli chcesz cofnąć tę akcję zrób:
git stash apply
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-11-29 14:36:05
Czasami potrzebujesz trochę -f
, jeśli git jest trudny. Ostrzeżenie, rób to tylko wtedy, gdy wiesz, czego się spodziewać.
git checkout <branch-name> -f
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-04-23 13:42:45