git hooks-获取git commit id

时间:2018-07-06 15:46:55

标签: git githooks

我想在用户从GitHub克隆到GitHub之后将其推送到GitHub之前,获取存储库的当前git commit ID。然后,应将此提交ID写入一个文件,该文件也在存储库中。是否可以使用任何Git钩子来做到这一点?

我有一个显示当前git id的c ++函数。如果用户下载(.zip)我的存储库,则应显示GitHub下载时提交的提交ID。如果他们克隆仓库,以后再提交,则git id应该会更新。有什么办法吗?

1 个答案:

答案 0 :(得分:0)

您当然可以这样做,不确定为什么,但是有可能。

请注意,git使用分支,因此您必须知道哪个分支是您的主要分支,我们假设master

  1. 使用git log command和一些选项可以从主分支上的远程HEAD获取提交ID。

    $ git log origin/master -n 1 --pretty=format:"%H"

  2. 将其输出到文件。

    $ git log origin/master -n 1 --pretty=format:"%H" > top_commit.txt

  3. 将此内容放入shell脚本中,以便您可以重复使用。

  4. 向所需的事件添加一个githook,我认为它将是pre-commit。有关更多信息,请参见https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

您可以做的事情有一些限制。例如,我知道您可以执行此操作以进行预提交,但是不确定在克隆时是否需要这样做。另外,必须安装客户端githooks。您需要编写脚本来为您的用户安装脚本。

更新

类似于您所要求的东西是可能的,但不完全是;我认为不可能将提交的提交提交到文件中,然后将该文件包含在同一提交中。

此外,我不确定您为什么要这样做,因为git log具有发生的全部历史。

有充分的理由想知道和使用HEAD上的提交ID,但是我们需要知道为什么,何时,何地,如何等等,以进一步为您提供帮助。