Иногда я проверяю какую-то предыдущую версию кода для проверки или тестирования. Я видел инструкции о том, что делать, если я хочу изменить предыдущие коммиты - но предположим, что я не делаю изменений. После того git checkout HEAD^
, как я сделал, например , как мне вернуться к концу ветви? .. git log
больше не показывает мне SHA последнего коммита.
git
version-control
Лев Алексеев
источник
источник
git log
предложения вашего вопроса, вы всегда можете запуститьgit log --all
(или более полезно,git log --oneline --graph --all
).Ответы:
Если вы знаете, что коммит, к которому вы хотите вернуться, является главой какой-либо ветви или помечен, то вы можете просто
Вы также можете использовать,
git reflog
чтобы увидеть, на что другие коммиты указывал ваш HEAD (или любой другой реф) в прошлом.Отредактировано, чтобы добавить:
В более новых версиях Git, если вы только запускаете
git checkout
или что-то еще перемещаетеHEAD
один раз, вы также можете сделатьвернуться туда, где он был до последней проверки. Это было мотивировано аналогией с идиомой оболочки,
cd -
чтобы вернуться в любой рабочий каталог, в котором вы были ранее.источник
master
на самом деле это не какое-то ключевое словоHEAD
. Это просто имя ветки по умолчанию в новом хранилище. Вы можете запустить,git branch
чтобы получить список веток в вашем хранилище иgit tag -l
список тегов. Аналогично,origin
это имя по умолчанию удаленного компьютера, с которого клонируется репозиторий, но в этом нет ничего особенного.git reflog
дает вам список хэшей, в какой момент вы можете использоватьgit checkout [commit-hash]
.мастер проверки
мастер - это совет или последний коммит. Гитк покажет вам только, где вы находитесь в дереве в то время. git reflog покажет все коммиты, но в этом случае вам просто нужен совет, так что git checkout master.
источник
git checkout branchname
Наткнулся на этот вопрос только сейчас и есть что добавить
Чтобы перейти на самый последний коммит:
Объяснение:
git log --branches
показывает журнал коммитов из всех локальных веток с-1
ограничением до одного коммита → самый последний--pretty=format:"%H"
формат коммита , чтобы показать только хеш коммита,git checkout $(...)
использующий вывод subshell в качестве аргумента для извлеченияЗамечания:
Это приведет к отстраненной голове (потому что мы обращаемся непосредственно к коммиту). Этого можно избежать, извлекая название ветви с помощью
sed
, объясненного ниже.Чтобы перейти на ветку самого последнего коммита:
Объяснение:
git log --branches
показывает журнал коммитов из всех локальных веток с-1
ограничением до одного коммита → последний--pretty=format:"%D"
формат коммитов , чтобы показывать только имена ссылок,| sed 's/.*, //g'
игнорировать все, кроме последнего из нескольких ссылок (*),git checkout $(...)
использовать вывод subshell в качестве аргумента для извлечения*) HEAD и удаленные ветви отображаются первыми, локальные ветви располагаются последними в алфавитном порядке по убыванию, поэтому оставшаяся часть будет в алфавитном порядке по имени первой ветви.
Замечания:
Это всегда будет использовать (в алфавитном порядке) имя первой ветви, если есть несколько для этого коммита.
В любом случае, я думаю, что лучшим решением будет просто отобразить имена ссылок для самого последнего коммита, чтобы знать, где оформить заказ:
Например, создайте псевдоним
git top
для этой команды.источник
alias git-head='git checkout $(git log --branches -1 --pretty=format:"%D" | sed "s/.*, //g")'
Посмотрите на графический интерфейс ...
gitk
он показывает все коммиты. Иногда графически легче работать ... ^^источник
Для этого вы можете использовать одну из следующих команд git:
источник
показать все ветки и зафиксировать
git log --branches --oneline
показать последний коммит
git log --branches -1 --oneline
показать перед последним коммитом
git log --branches -2 --oneline
источник
источник
Если у вас есть ветка, отличная от главной, один простой способ - проверить эту ветку, а затем проверить главную. Вуаля, вы вернулись на кончик мастера. Там, наверное, умнее способов ...
источник
Вы можете просто сделать
git pull origin branchname
. Он снова получит последний коммит.источник
Если ваш последний коммит находится в основной ветке, вы можете просто использовать
источник