git - 在预提交 Hook 中,查找正在创建的提交的父级的哈希值

标签 git parent githooks git-rebase git-amend

我的 pre-commit 钩子(Hook)中有一些测试,需要先前提交的哈希值才能工作。 我所说的上一次提交是指将成为当前正在创建的提交的父提交的提交。

通常,我可以使用git rev-parse HEAD。 但是,在 --amend 提交期间,HEAD 指向将被删除和替换的提交,所以我真正需要的是 HEAD^.

我也有点担心 rebase 。 我不知道接下来会发生什么奇怪的事情。

如何在 pre-commit Hook 中可靠地获取父提交的哈希值(如所述)?

最佳答案

我能得到的最接近的是事后在重写后 Hook 中检测它。

在代码中,在 Git 甚至确定父级之前就调用了预提交。这对我来说看起来很随意,the prepare_to_commit call可以向下移动一段,并且父级作为钩子(Hook)参数传递,而不会破坏向后兼容性,除了一些“为什么你会这样做”的情况之外,但这不是现在的工作方式。

无论如何,真正的执行需要在发布存储库的预接收中完成,如果在重写后检测到错误并向那里的用户提示,也许重置 --soft'ing 回到原始状态以撤消改变,不会为你做这件事,也许写下你在这里真正做的事情的描述,然后一个补丁或一个帮助我的信就可以改变它。

关于git - 在预提交 Hook 中,查找正在创建的提交的父级的哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73092034/

相关文章:

git - 如何仅从 Git 的根文件夹中排除文件

css - 获取根选择器,并将其用作另一个选择器的一部分 - 在 Stylus 中

javascript - 这里如何选择TR?

git - 如何在 git 中获取或 pull 命令后立即执行命令?

git - Flake8 配置未在 git hook 中应用

svn:git 中的外部

git - 使用最新版本覆盖 git 中的特定冲突文件

linux - 服务器上的 Git 没有 SSH 访问权限

html - 父级 100% 高度,没有高度

drupal - Ubercart 和 Drupal 7 - hook_add_to_cart