0

我有一个用于构建版本的脚本。它执行许多验证检查;包括确保代码未经修改;相对于存储库。

作为此过程的一部分,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输出。

问:这对我来说非常违反直觉。为什么会这样?

4

1 回答 1

1

当您说没有差异输出时,您的意思是完全空白还是有些行没有可见差异。

可能是空格的差异是为什么它们不可见。

于 2021-02-12T12:01:07.277 回答