bash脚本中的Git diff命令不返回任何内容

h7wcgrx3  于 2023-05-12  发布在  Git
关注(0)|答案(1)|浏览(123)

我已经创建了一个pre-push git钩子来管理我的repo中的Jupyter notebook(我想抑制notebook的输出,但这不是这篇文章的重点)。在脚本的开头,我在STAGED变量中计算了自上次提交以来修改过的所有notebook(它们都在notebooks目录中):

STAGED=$(git diff --cached --name-only --diff-filter=ACM --relative notebooks | grep .ipynb)

在修改了我的一个笔记本之后,我在终端中git add .并创建了一个git diff,只是为了看看笔记本是否在git索引中。git diff命令按预期返回修改后的文件。我做了一个承诺和推。执行了预推钩子,但我可以看到(使用echo $STAGED)STAGED变量为空。只是为了确保我也回显当前目录,正如预期的那样,它是我的项目的根目录(其中包含notebooks目录和我的笔记本)。为什么bash脚本中的git diff命令不返回任何内容?

bis0qfac

bis0qfac1#

当你执行git commit时,你的stage上的任何东西都成为提交的一部分,所以git diff --staged将是空的。
如果你想查看从上一次提交到当前提交的更改,那么你必须执行git diff @~,而不是git diff --staged

相关问题