Как вернуться к самой последней версии в Git?


Я недавно перешел из SVN в Git и немного запутался в чем-то. Мне нужно было запустить предыдущую версию скрипта через отладчик, поэтому я сделал git checkout <previous version hash> и сделал то, что мне нужно делать.

теперь я хочу вернуться к последней версии, но я не знаю хэш для него. Когда я набираю git log, Я не вижу.

Как я могу это сделать? Кроме того, есть ли более простой способ изменить версии, чем набрав хэши - что-то вроде "вернуться к двум версиям" или " перейти к самому хронологически недавнему"?

9 234

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 требует, чтобы вы имели дело с этими файлами. У вас есть три варианта:

  1. припрятать свои модификации (вы можете поп их позже):

    $ git stash
    
  2. отбросить изменения сброс отсоединенной ветви:

    $ git reset --hard
    
  3. создайте новую ветку с предыдущими изменениями и зафиксируйте их:

    $ git checkout -b my_new_branch
    $ git add my_file.ext
    $ git commit -m "My cool msg"
    

после этого вы можете вернуться к своей главной ветви (самая последняя версия):

$ git checkout master

Это сделало трюк для меня (я все еще был на главной ветке):

git reset --hard origin / 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