为什么命令是';git diff index--check--cached$与--';输出使用信息?

为什么命令是';git diff index--check--cached$与--';输出使用信息?,git,Git,我正在尝试创建一个预提交挂钩,以防止意外提交合并冲突。。。当提交包含>>>时,基本上取消提交。我已经找到了多种可行的方法,但我想知道为什么“官方”方法不起作用(尝试使用的是指)。当我执行这个命令时,我会看到使用信息(见下文),而不是错误。我期望类似这样的遗留冲突标记,因为我的代码库中有一个测试冲突。我不是在寻找替代品,这些已经很容易找到了。我只是想知道为什么这个命令不起作用 $ git diff-index --check --cached $against -- usage: git diff

我正在尝试创建一个预提交挂钩,以防止意外提交合并冲突。。。当提交包含
>>>
时,基本上取消提交。我已经找到了多种可行的方法,但我想知道为什么“官方”方法不起作用(尝试使用的是指)。当我执行这个命令时,我会看到使用信息(见下文),而不是错误。我期望类似这样的
遗留冲突标记
,因为我的代码库中有一个测试冲突。我不是在寻找替代品,这些已经很容易找到了。我只是想知道为什么这个命令不起作用

$ 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 Bash和Windows Powershell中尝试了这一点,两者的结果相同。

根据评论,这里的基本问题是复制了一些脚本,但还不够。当shell变量
未设置时,
扩展为零,使
git diff index
没有
参数


从脚本中复制足够的设置应该可以解决问题。

什么是
$off
扩展到这里?@torek$off似乎是一个空字符串
echo“country is$country”
在我的githook输出中
country is
OK,这就是问题所在:
git diff index
需要一个
参数,如语法所示。您希望将索引与哪棵树进行区分?是和否。是,$anth需要是一棵树。但是,我不认为我需要自己设置这个值——git应该为我设置。如果windows上的git有一个限制,
$对
不可用,那么在windows上使用此命令的git钩子是否不可能,尽管它是官方示例?或者它只是需要额外的一步,将$设置到正确的树上?如果是这样,正确的树应该是什么?您是否从
https://github.com/git/git/blob/v2.26.0/templates/hooks--pre-commit.sample
<根据其他条件,在第12行或第15行设置代码>与。如果您只复制了第47行,
——这是一个shell变量,而不是Git变量,则不会设置它。
$ git --version
git version 2.25.0.windows.1