Интересно то, что git ls-remote
здесь вообще работает.
Первый аргумент, который вы передаете git ls-remote
, должен быть URL (https://host/...
, ssh://git@github.com/...
и т. Д.) Или имя удаленного (обычно origin
). Однако Git принимает пути локальной файловой системы вместо file://...
URL-адресов.
Когда Git делает этот последний трюк, кажется, что он делает это несколько странно и непоследовательно. В моих экспериментах у меня было несколько иное поведение, но оно все еще было странным.
Помимо любопытства Academi c и / или возможных внутренних ошибок, вы должны просто прекратить использовать git ls-remote
здесь и использовать git rev-parse
напрямую , Если вы хотите получить ревизию ha sh ID из текущего репозитория, просто запустите, например, git rev-parse
:
git rev-parse HEAD
. Если вы хотите получить один из другого Git репозитория в расположении файловой системы X, используйте:
git -C X rev-parse HEAD
, например. Это ведет себя хорошо - в отличие от странных результатов, которые вы и я здесь наблюдаем для git ls-remote
, аргумент -C
делает Git внутренне chdir
на время повторного анализа - и работает быстрее, и его проще и проще иметь дело с. Он работает также для git ls-files
и всех других команд Git, поскольку он реализован в интерфейсе git
.