我已经创建了一个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命令不返回任何内容?
1条答案
按热度按时间bis0qfac1#
当你执行
git commit
时,你的stage上的任何东西都成为提交的一部分,所以git diff --staged
将是空的。如果你想查看从上一次提交到当前提交的更改,那么你必须执行
git diff @~
,而不是git diff --staged
。