git reset спрашивает "еще?"

81

Командная строка Windows Git, версия 1.8.0

У меня есть 3 коммита, и когда я печатаю

git reset --soft HEAD^

новая линия приходит с

More?

и мигающий курсор для ввода

Тогда, что бы я ни набирал, я всегда получаю

фатальный: неоднозначный аргумент. 'HEAD': неизвестная ревизия или путь не в рабочем дереве. Используйте '-' для отделения путей от ревизий, например: 'git [...] - [...]

Все остальные команды отлично работают в той же папке.

norbertas.gaulia
источник
13
Если вы используете Windows git log HEAD^^, я думаю , вы могли бы это сделать .
Имя McChange 04
@NameMcChange, если вы добавите свой комментарий в ответ, то мой ответ можно будет удалить.
mcdon
@mcdon Не-а, ты можешь это получить
Имя МакЧейндж
Чтобы избежать каких-либо других видов экранирования в командах git, я начал использовать git bash вместо командной строки Windows. Git для Windows предоставляет эмуляцию BASH, используемую для запуска Git из командной строки. Итак, если вы установите git для Windows, вы сможете запускать свои команды git в Git Bash. Я предпочитаю это, потому что таким образом вы будете использовать команду git независимо от платформы. Ваши команды не будут отличаться от тех, которые вы написали на машинах Linux или Mac.
adnan2nd

Ответы:

72

посмотреть, git log HEAD^работает ли . Если нет, то это может быть что-то с вашей локализацией или терминалом. Кажется, что это фильтрует ^символ. В качестве обходного пути используйте git reset --soft HEAD~1сейчас.

Адам Димитрук
источник
git log HEAD^выдает точно такой же сценарий, хотя git reset --soft HEAD~1обходной путь работает нормально
norbertas.gaulia
1
Спасибо, обходной путь помогает. Больше не требует больше.
Дмитрий Пракапенко
39

Ваша оболочка интерпретирует ^символ как символ продолжения строки. Либо просто избегайте использования, ^как предлагает Адам :

git reset --soft HEAD~1

или процитируйте аргумент, чтобы оболочка не пыталась его интерпретировать (я не уверен, какую именно оболочку вы используете, но я был бы удивлен, если это не сработает):

git reset --soft "HEAD^"
я и
источник
Это довольно распространенная проблема :)
Ромен
28

^ - это escape-символ в командной строке Windows. Используйте ^^ вместо ^.

git reset --soft HEAD^^

См. «Страницы сценариев Роба Ван Дер Вуда» для получения подробной информации о побегах .

McDon
источник