【发布时间】:2013-08-23 02:10:35
【问题描述】:
在回答previous question 之后,我实现了一个 Git 挂钩脚本,只要工作目录更新,就需要触发该脚本。我将此脚本链接到 .git/hooks 中的以下内容:
- 结帐后
- 提交后
- 合并后
这大部分都有效,但并非总是如此。我发现的一个案例是git stash。这是一个问题,因为我的钩子生成了一个文本文件,我还用git update-index --assume-unchanged 标记,告诉 Git 我不想签入更改(签入一个空版本)。但是,git stash 会将假设未更改的文件还原为空文件,这意味着钩子需要再次运行,但在 git stash 之后不会调用钩子。
我怀疑git rebase 也可能存在类似问题,但这并不容易解释。
我想要一个让 Git 在更新工作目录后始终运行的钩子。这可能吗?
【问题讨论】:
-
你试过
git update-index --skip-worktree,看看文件是否也受到 git stash 的影响? -
我不知道
--skip-worktree。现在我已经尝试过了,它似乎确实做了我想要的。如果您将其添加到您的答案中,我会接受。