Как вернуться к последнему коммиту после проверки предыдущего коммита? - PullRequest
406 голосов
/ 11 марта 2010

Я иногда проверяю какую-то предыдущую версию кода для проверки или тестирования. Я видел инструкции о том, что делать, если я хочу изменить предыдущие коммиты - но предположим, что я не делаю изменений. После того как я сделал, например git checkout HEAD^, как мне вернуться к концу ветки? .. git log больше не показывает мне SHA последнего коммита.

Ответы [ 9 ]

510 голосов
/ 11 марта 2010

Если вы знаете, что коммит, к которому вы хотите вернуться, является главой какой-либо ветви или помечен, то вы можете просто

git checkout branchname

Вы также можете использовать git reflog, чтобы увидеть, на что другие коммиты указывал ваш HEAD (или любой другой реф) в прошлом.


Отредактировано, чтобы добавить:

В более новых версиях Git, если вы только запускали git checkout или что-то еще, чтобы переместить HEAD один раз, вы также можете сделать

git checkout -

чтобы вернуться туда, где он был до последней проверки. Это было мотивировано аналогией с идиомой оболочки cd -, чтобы вернуться к любому рабочему каталогу, в котором ранее находился.

22 голосов
/ 26 сентября 2014

мастер проверки git

master - это совет или последний коммит. Гитк покажет вам только то, где вы находитесь на дереве в данный момент. git reflog покажет все коммиты, но в этом случае вам просто нужен совет, так что git checkout master.

17 голосов
/ 28 октября 2015

Наткнулся на этот вопрос только сейчас и есть что добавить

Чтобы перейти к последнему коммиту:

git checkout $(git log --branches -1 --pretty=format:"%H")

Пояснение:

git log --branches показывает журнал коммитов из всех локальных филиалов
-1 ограничение до одного коммита & rarr; последний коммит
--pretty=format:"%H" формат для отображения только хэша коммита
git checkout $(...) использовать вывод subshell в качестве аргумента для оформления заказа

Примечание:

Это приведет к отсоединению головы (потому что мы обращаемся непосредственно к коммиту). Этого можно избежать, извлекая название ветви с помощью sed, как описано ниже.


Чтобы перейти на ветку самого последнего коммита:

git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')

Пояснение:

git log --branches показывает журнал коммитов из всех локальных филиалов
-1 ограничение до одного коммита & rarr; последний коммит
--pretty=format:"%D" формат для отображения только имен ссылок
| sed 's/.*, //g' игнорировать все, кроме последнего из нескольких ссылок (*)
git checkout $(...) использовать вывод subshell в качестве аргумента для оформления заказа

*) HEAD и удаленные ветви отображаются первыми, локальные ветви располагаются последними в алфавитном порядке по убыванию, поэтому оставшиеся ветви будут именоваться по алфавиту в качестве первой ветви

Примечание:

Это всегда будет использовать (в алфавитном порядке) имя первой ветви, если есть несколько для этого коммита.


В любом случае, я думаю, что лучшим решением было бы просто отобразить имена ссылок для самого последнего коммита, чтобы знать, где оформить заказ:

git log --branches -1 --pretty=format:'%D'

например. создайте псевдоним git top для этой команды.

9 голосов
/ 11 марта 2010

Посмотрите на графический интерфейс ... gitk показывает все коммиты. Иногда графически легче работать ... ^^

7 голосов
/ 15 января 2016

Для этого вы можете использовать одну из следующих команд git:

git checkout master
git checkout branchname
2 голосов
/ 25 февраля 2019

показать все ветки и зафиксировать
git log - ветви --oneline

показать последний коммит
git log - ветви -1 --oneline

показать перед последним коммитом
git log - ветки -2 --oneline

0 голосов
/ 01 ноября 2018
git reflog //find the hash of the commit that you want to checkout
git checkout <commit number>>
0 голосов
/ 23 октября 2018

Если у вас есть ветка, отличная от главной, один простой способ - проверить эту ветку, а затем проверить главную. Вуаля, вы вернулись на кончик мастера. Там, наверное, умнее пути ...

0 голосов
/ 06 июля 2017

Если ваш последний коммит находится в основной ветке, вы можете просто использовать

git checkout master
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...