Почему команда 'git diff-index --check --cached $ против -' выводит информацию об использовании? - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь создать ловушку предварительной фиксации, чтобы предотвратить случайное принятие конфликтов слияния ... в основном, отмену фиксации, когда она включает >>>>. Я нашел несколько жизнеспособных подходов, но мне интересно, почему «официальный» подход не работает (пытается использовать { ссылка }, что относится к https://github.com/git/git/blob/v2.26.0/templates/hooks--pre-commit.sample#L49). Когда я выполняю эту команду, я получаю информацию об использовании (см. Ниже) вместо ошибки. Я ожидал что-то вроде leftover conflict marker, потому что у меня есть тестовый конфликт в моей кодовой базе. Я не ищу альтернативы, они уже доступны на SO. Я просто хочу знать, почему эта команда не работает.

$ git diff-index --check --cached $against --
usage: git diff-index [-m] [--cached] [<common-diff-options>] <tree-ish> [<path>...]
common diff options:
  -z            output diff-raw with lines terminated with NUL.
  -p            output patch format.

Отладочная информация:

$ git --version
git version 2.25.0.windows.1

Я пробовал это в Git Bash и Windows Powershell, один и тот же результат в обоих.

1 Ответ

1 голос
/ 08 апреля 2020

Согласно комментариям, основной проблемой c здесь было копирование некоторого, но недостаточного, сценария в https://github.com/git/git/blob/v2.26.0/templates/hooks--pre-commit.sample. Если переменная оболочки against не установлена, $against расширился до нуля, в результате чего git diff-index без аргумента <tree-ish>.

Копирование достаточного количества настроек из сценария должно решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...