попробуй (не проверял)
git checkout HEAD@{1}
на "переключается обратно на HEAD
", как это было до вашего checkout xxx
.
См. Также "HEAD
и ORIG_HEAD
в Git "
Все остальные спецификации ревизии находятся здесь: rev_parse, раздел «УКАЗАНИЯ ПЕРЕСМОТРОВ» .
Например, чтобы вернуться к предыдущей ветке , вы можете попробовать @{-1}
.
Только что протестировал (опция «предыдущий HEAD
»):
Простое git-репо с 3 файлами, добавленными в три коммита (a
, затем b
, затем c
):
C:\git\tests\p3>git log --oneline
6e5b961 c
66c68e3 b
77e9a40 a
Я оформляю первый коммит (DETACHED HEAD
)
C:\git\tests\p3>git checkout 77e9a40
Note: moving to '77e9a40' which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
git checkout -b <new_branch_name>
HEAD is now at 77e9a40... a
C:git\tests\p3>dir
08/12/2010 12:27 PM 4 a.txt
Я пытаюсь вернуться к предыдущему HEAD
, прежде чем сделать DETACHED HEAD
:
C:\git\tests\p3>git checkout HEAD@{1}
Previous HEAD position was 77e9a40... a
HEAD is now at 6e5b961... c
Работает!
Вы получаете верный коммит, но не правильную ветвь (т. Е. Вы все еще находитесь в отдельном режиме)
C:\git\tests\p3>git branch
* (no branch)
master
В этой конфигурации попытка вернуться в предыдущую ветку не будет работать
C:\git\tests\p3>git checkout HEAD@{-1}
error: pathspec 'HEAD@{-1}' did not match any file(s) known to git.
Таким образом, единственное реальное решение вернуться к HEAD (не к фиксации в отдельном режиме) - это сначала запомнить его
git symbolic-ref HEA
См. Ответ Джефроми .