我有一个用于构建版本的脚本。它执行许多验证检查;包括确保代码未经修改;相对于存储库。
作为此过程的一部分,Git 下的文件夹被删除然后重新创建。问题是不知何故git diff-index将其报告为已修改;但是,使用git diff.
我创建了一个最小可重现的示例:
文件结构:
- script.sh (see below)
- my_dir
- 1.txt
- 2.txt
- 3.txt
- 4.txt
文件 1-4.txt 是空文本文件。
脚本.sh:
#!/bin/sh
echo "Hello"
# Replace the original my_dir folder with a clone.
cp -r my_dir my_dir2
rm -rf my_dir
mv my_dir2 my_dir
if ! git diff-index --quiet HEAD -- ; then
echo "ERROR"
git diff HEAD --
git diff
git status --short
exit 1
fi
运行脚本时,失败;报告以下内容:
Hello
ERROR
注意没有任何diff输出。
问:这对我来说非常违反直觉。为什么会这样?