在使用预提交挂钩提交之前修改文件

ElB*_*ulP 7 git pre-commit githooks

我正在尝试编写一个预提交钩子来修改我的代码中的一行,但我甚至不知道从哪里开始.

问题是:

我有一个 KEY

public static final String APP_KEY = ""; //DELETE THE KEY BEFORE COMMIT!!!
Run Code Online (Sandbox Code Playgroud)

为了避免将KEY发布到存储库,我认为git hooks可能是我们需要的东西,而不是手动删除密钥.我看看自定义git钩子但我不知道如何编写钩子.

有没有办法在提交更改之前,删除KEy并在提交后再次写入密钥?

Von*_*onC 2

这可以通过内容过滤器驱动程序来完成:

  • 一个clean在检查时删除密钥的脚本,
  • 一个smudge脚本,可以在结帐时将其添加回来。

弄脏

(图片来自Git 书籍中的“自定义 Git 属性” )

请参阅“ git 能否在空格和制表符之间自动切换? ”中查看如何声明这些过滤器的示例。

警告:

正如胡安·阿隆索评论中指出的那样:

对于类似的用例,我除了清理/涂抹脚本遇到麻烦之外什么都没有,具体取决于文件内容,无人值守运行git add -A是否会运行过滤器(而不是在git有人值守模式下调用时始终工作)。

所以我最终选择了pre-commit hook