在尝试编写一个拒绝对某些类型的文件进行某些类型的更改的预接收挂钩时,我很难理解为什么在该脚本中以下内容是合法的:
git show <new_commit>:<file>
如本示例中使用的那样(在使用带有 --name-only 的 diff 梳理出受影响的文件之后),但不是
git diff <old_commit> <new_commit> -- <file>
我更喜欢后者,这样我只拒绝引入的更改而不是文件中已经存在的模式,但是当从这个脚本执行时,它会生成错误:“未知的修订或路径不在工作树中”。
我怀疑这与事件的顺序有关,因为两者都在我的裸仓库的命令行中工作,但想了解区别。