Я недавно перешел из SVN в Git и немного смущен чем-то. Мне нужно было запустить предыдущую версию скрипта через отладчик, поэтому я сделал git checkout <previous version hash>
и сделал то, что мне нужно было сделать.
Теперь я хочу вернуться к новейшей версии, но я не знаю хэш для этого. Когда я печатаю git log
, я этого не вижу.
Как я могу это сделать? Кроме того, есть ли более простой способ изменить версии, чем вводить хэши - что-то вроде «вернуться к двум версиям» или «перейти к самой последней в хронологическом порядке»?
источник
git checkout master
именно так я переключаюсь обратно с ветки. Значит ли это, что когда я проверяю предыдущую версию, я по сути создаю ветку?git log
будет отображаться относительно этой точки? И когда я извлекаю мастер, я перемещаю указатель на последнюю версию мастер ветки?git checkout
это способ двигаться ГОЛОВА вокруг. Когда вы отключили HEAD, вы указали прямо на этот коммит; когда вы снова проверяете мастер, он снова указывает на мастер. (И многие многие команды, такие какgit log
фактически, принимают диапазон ревизий, который по умолчанию равен HEAD.)Когда вы извлекаете конкретный коммит, git создает отдельную ветку. Итак, если вы позвоните:
Вы увидите что-то вроде:
Чтобы вернуться к главе ветки master, вам просто нужно снова зайти в вашу ветку master:
Эта команда автоматически удалит отдельную ветку.
Если
git checkout
не работает, вы, вероятно, изменили файлы, конфликтующие между ветвями. Чтобы предотвратить потерю кода, git требует, чтобы вы имели дело с этими файлами. У вас есть три варианта:Спрятать ваши модификации (вы можете добавить их позже):
Отмените изменения, сбросив отдельную ветку:
Создайте новую ветку с предыдущими изменениями и передайте их:
После этого вы можете вернуться в свою основную ветку (самая последняя версия):
источник
Это помогло мне (я все еще был в основной ветке):
источник
Чтобы вернуться к последней версии:
Например,
git checkout master
илиgit checkout dev
источник
Вы можете проверить, используя имена филиалов, с одной стороны.
Я знаю, что есть несколько способов перемещать ГОЛОВКУ, но я оставлю это для эксперта по мерзавцам, чтобы перечислить их.
Я просто хотел предложить
gitk --all
- я нашел это чрезвычайно полезным, когда начинаю с git.источник
Я только начинаю копать глубже в мерзавец, так что не уверен , если я правильно понимаю, но я думаю , что правильный ответ на вопрос OP является то , что вы можете работать
git log --all
со спецификацией формата , как это:git log --all --pretty=format:'%h: %s %d'
. Это помечает текущую выписанную версию как,(HEAD)
и вы можете просто взять следующую из списка.Кстати, добавьте псевдоним, подобный этому,
.gitconfig
с немного лучшим форматом, и вы можете запуститьgit hist --all
:Что касается относительных версий, я нашел этот пост , но он говорит только о старых версиях, вероятно, нет ничего, чтобы ссылаться на более новые версии.
источник
Некоторые ответы здесь предполагают, что вы находитесь в главной ветке, прежде чем решили оформить более старый коммит. Это не всегда так.
Укажет вам обратно на ветку, в которой вы были ранее (независимо от того, была ли она главной или нет).
источник
git checkout hash2
послеgit checkout hash1
,git checkout -
вернет вас кhash1
.Когда вы вернетесь к предыдущей версии,
С помощью этой команды вы можете просмотреть свой журнал функций (хэш) даже в этой ситуации;
master
может быть заменено другим именем ветви.Затем проверьте его, и вы сможете вернуться к этой функции.
источник
В Git 2.23+ (август 2019 г.) лучше всего использовать
git switch
вместо запутаннойgit checkout
команды.Чтобы создать новую ветку на основе более старой версии:
Чтобы вернуться к текущей основной ветке:
источник
Более элегантным и простым решением является использование
Он вернется к самой последней версии локальной ветки и также сохранит ваши изменения в stash, поэтому, если вы хотите отменить это действие, выполните:
источник