Как вернуться к самой последней версии в Git?
Я недавно перешел из SVN в Git и немного запутался в чем-то. Мне нужно было запустить предыдущую версию скрипта через отладчик, поэтому я сделал git checkout <previous version hash> и сделал то, что мне нужно было сделать.
Теперь я хочу вернуться к самой новой версии, но я не знаю хэша для нее. Когда я печатаю
git log, я его не вижу.Как я могу это сделать? Кроме того, есть ли более простой способ изменить версии, чем вводить хэши - что-то вроде "вернуться к двум версиям" или " перейти к самой хронологически последние"?
9 ответов:
git checkout masterэто должно сработать. Чтобы вернуться к двум версиям, вы могли бы сказать что-то вродеgit checkout HEAD~2, но лучше создать временную ветвь , основанную на этом времени, так чтоgit checkout -b temp_branch HEAD~2
При возврате к определенному коммиту git создает обособленную ветвь. Итак, если вы позвоните:
$ git branchВы увидите что-то вроде:
* (detached from 3i4j25) master other_branchЧтобы вернуться к главному ответвлению, вам просто нужно снова обратиться к главному ответвлению:
$ git checkout masterЭта команда автоматически удалит отсоединенную ветвь.
Если
git checkoutне работает, вероятно, у вас есть измененные файлы, конфликтующие между ветвями. Чтобы предотвратить потерю кода, git требует, чтобы вы имели дело с ними файлы. У вас есть три варианта:
Спрячьте свои модификации (вы можете открыть их позже):
$ git stashОтменить изменения, сбрасывающие отсоединенную ветвь:
$ git reset --hardСоздайте новую ветвь с предыдущими модификациями и зафиксируйте их:
$ git checkout -b my_new_branch $ git add my_file.ext $ git commit -m "My cool msg"После этого вы можете вернуться к своей главной ветви (самая последняя версия):
$ git checkout master
Я только начинаю копать глубже в git, поэтому не уверен, правильно ли я понимаю, но я думаю, что правильный ответ на вопрос OP заключается в том, что вы можете запустить
git log --allсо спецификацией формата, такой как:git log --all --pretty=format:'%h: %s %d'. Это помечает текущую проверенную версию как(HEAD), и вы можете просто взять следующую из списка.Кстати, добавьте такой псевдоним к вашему
.gitconfigс немного лучшим форматом, и вы можете запуститьgit hist --all:hist = log --pretty=format:\"%h %ai | %s%d [%an]\" --graphЧто касается относительных версий, я нашел это post , но он говорит только о старых версиях, вероятно, нет ничего, чтобы ссылаться на более новые версии.
Вы можете проверить, используя названия филиалов, например.
Я знаю, что есть несколько способов двигать головой, но я оставлю это эксперту git, чтобы перечислить их.Я просто хотел предложить
gitk --all- я нашел это чрезвычайно полезным, когда начал с git.
Чтобы вернуться к последней версии:
git checkout <branch-name>Например,
git checkout masterилиgit checkout dev
Когда вы вернетесь к предыдущей версии,
$ git checkout HEAD~2 Previous HEAD position was 363a8d7... Fixed a bug #32Вы можете просмотреть журнал функций(хэш) с помощью этой команды даже в этой ситуации;
$ git log master --oneline -5 4b5f9c2 Fixed a bug #34 9820632 Fixed a bug #33 ...
masterможет быть заменено другим именем ветви.Затем проверьте его, и вы сможете вернуться к функции.
$ git checkout 4b5f9c2 HEAD is now at 4b5f9c2... Fixed a bug #34
Более элегантным и простым решением является использование
git stashОн вернется к самой возмущенной локальной версии ветки, а также сохранит ваши изменения в тайнике, поэтому, если вы хотите отменить это действие, сделайте:
git stash apply
Иногда вам нужно немного
-f, если git является трудным. Предупреждение, делайте это только в том случае, если вы знаете, чего ожидать.
git checkout <branch-name> -f
Comments