Ответ 1
Карат (^
) имеет особое значение в Bash и Zsh.
Вам нужно будет избежать этого или процитировать его:
% git show HEAD\^
% git show 'HEAD^^'
Я использую Zsh и пытаюсь запустить git show для проекта, чтобы увидеть мою историю изменений. Если я делаю
git show HEAD
он отлично работает, показывая мне свою последнюю фиксацию, однако следующие команды не работают
[master↑5⚡]:~/project $ git show HEAD^
zsh: no matches found: HEAD^
[master↑5⚡]:~/project $ git show HEAD^^
zsh: no matches found: HEAD^^
Однако это работает
git HEAD~1
Я делаю что-то неправильно здесь с git show HEAD^^
?
git версия 1.7.4.5
Карат (^
) имеет особое значение в Bash и Zsh.
Вам нужно будет избежать этого или процитировать его:
% git show HEAD\^
% git show 'HEAD^^'
Вместо того, чтобы скрывать или цитировать каретку, вы можете просто сказать zsh
, чтобы остановить выполнение команды, когда она не соответствует шаблону шара. Поместите этот параметр в свой .zshrc
:
setopt NO_NOMATCH
Эта опция останавливает zsh
от прерывания команд, если glob-matching терпит неудачу. git show HEAD^
будет работать правильно, и вам не нужно избегать каретки. Кроме того, globing и ^
обозначение событий будут по-прежнему работать так, как вы ожидаете.
Чтобы ответить на вопрос dolzenko в комментариях, вы можете получить git log ^production master
(что, по совпадению, также точно, что синтаксис git "double dot" делает: git log production..master
) для работы путем отключения расширенного globbing:
setopt NO_EXTENDED_GLOB
Конечно, на самом деле вы можете полагаться на расширенное подтягивание и не знать этого. Я рекомендую прочитать что он делает, прежде чем отключать его.
Вы также можете использовать noglob.
% noglob git show HEAD^
(или сделать псевдоним для noglob git
)