Почему происходит сбой HEAD ^ при успешном выполнении HEAD ~ в командной строке? - PullRequest
0 голосов
/ 05 сентября 2018

Я попытался выполнить следующую команду:

git checkout HEAD^

и я получил вывод

More? (I press Enter)
More? (I press Enter)
error: pathspec 'HEAD
' did not match any file(s) known to git.

Что это значит? Если я выполню эту команду вместо:

git checkout HEAD~

оформление заказа прошло без проблем.

Я подтвердил, что у HEAD в настоящее время есть только один родитель.

Редактировать: Я забыл указать, что выполняю это в командной строке. На самом деле это была проблема, поскольку ^ является управляющим символом в командной строке.

1 Ответ

0 голосов
/ 05 сентября 2018

Из этого вопроса SO , HEAD^ семантически означает родителя текущего HEAD. Может быть несколько родителей текущего HEAD, если HEAD будет коммитом слияния.

Из Git Bash git checkout HEAD^ работал для меня без проблем. Я предполагаю, что вы делаете это из командной оболочки, а не из Bash. В этом случае вы можете попробовать заключить в двойные кавычки, например,

git checkout "HEAD^"

Я протестировал вышеупомянутое с помощью приглашения Windows и получил следующее:

HEAD is now at 450db90... some commit message here

Это означает, что вышеприведенная проверка переводит нас в отключенное состояние HEAD, один коммит до текущего HEAD ветви. Если вы хотите вернуть исходную ветку после осмотра, просто извлеките название ветви, например,

git checkout your_branch
...