【问题标题】:Git add in pre-commit hook not staging file for commitGit添加预提交钩子而不是暂存文件以进行提交
【发布时间】:2019-01-17 14:25:35
【问题描述】:

我已经编写了一个 pre-commit 钩子来编译我的项目并将生成的文件添加到提交中。

这是一个 JavaScript 项目,我正在使用 husky,但我也尝试过编辑 .git/hooks/pre-commit 并且文件没有添加到提交中。如果我取消提交,我可以看到文件已添加,但由于某种原因,这不适用于当前提交。

我的预提交钩子看起来像:

const shell = require('shelljs');

shell.exec('yarn bundle');
shell.exec('git add dist');
shell.exit(0);

shelljs 只是一个在 node 中执行跨操作系统 unix 命令的库

我编辑了.git/hooks/pre-commit 以运行git add dist,但该文件仍未添加到提交中

【问题讨论】:

  • 钩子真的执行了吗?它需要设置可执行位,如果不存在则可能会被忽略。不用shelljs也检查一下,直接调用git add dist
  • 钩子肯定被执行了,是的,我确实尝试运行git add dist,但它仍然没有工作

标签: git pre-commit-hook git-husky


【解决方案1】:

我不认为 git add 可以在 pre-commit hook 中工作,用于检查即将提交的内容,而不是修改它。

您可以改用类似于“Can a Git hook automatically add files to the commit?”的方法,这会创建一个单独的附加提交。

【讨论】:

  • 通过预提交钩子添加文件确实有效。考虑最简单的钩子echo text > test.file && git add test.file - 为我工作。
  • 预推送呢?您可以始终提交,但在尝试推送时,您实际上可以生成其他文件,添加它们,以编程方式提交它们,然后发出 exit(0) 以便推送发生。但是,是的,正如@VonC 所说,“似乎错了”。
  • 感谢@VonC 使用其他问题的解决方案确实帮助了我,但我希望能够在预提交挂钩中添加一个额外的文件......
猜你喜欢
  • 1970-01-01
  • 2018-05-21
  • 2014-05-17
  • 2013-12-15
  • 2020-07-18
  • 2016-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多