【问题标题】:How to get first commit message when multiple commits are pushed together将多个提交推送到一起时如何获取第一个提交消息
【发布时间】:2019-12-31 09:21:30
【问题描述】:

我正在尝试编写一个预接收挂钩脚本来将 git 提交与 jira id 链接起来。我想验证第一个提交(将成为我的拉取请求的标题)是否遵循提交消息的指定正则表达式。 你能帮我在拉取请求中获得一系列提交中第一次提交的提交消息吗

我在我的分支中遵循以下步骤:

git add file1
git commit -m 'JIRA-123 Adding file1'
git add file2
git commit -m 'Adding file2'
git push origin master

现在我可以使用以下命令获取特定于推送的最后提交消息

git log --max-count=1 --format=%B

输出:添加文件2

但我希望输出是第一个提交消息-

JIRA-123 添加文件1

您能否告诉我是否有办法使用git loggit reflog 获得所需的结果

提前致谢!

【问题讨论】:

    标签: bash github git-commit git-log github-enterprise


    【解决方案1】:

    通用方式

    一般来说,git 不知道您将在 PR 中包含多少提交。因此,很难为您的 PR 选择合适的提交消息。因此,您可以使用 SHA1 来指向特定的提交。

    假设git commit -m 'JIRA-123 Adding file1' 返回了类似的内容:

    $ git commit -m 'JIRA-123 Adding file1'
    > [master de56f51] JIRA-123 Adding file1
    > 1 file changed, 0 insertions(+), 0 deletions(-)
    

    de56f51 - 是该提交的 SHA1

    因此,您可以使用 git show 获得对该提交的评论:

    $ git show de56f51 --pretty=%B --no-patch
    > JIRA-123 Adding file1
    

    更具体的方式

    如果您恰好每个 PR 有两次提交

    如果您确定您的提交计数等于 2,那么您可以使用以前的答案:

    git log --max-count=1 --format=%B HEAD~1
    

    如果你没有超过一个 PR 每天

    如果您每天没有超过一个 PR,那么您可以使用

    git log --since=yesterday --max-count=1 --format=%B
    

    它将显示今天第一次提交的评论。

    【讨论】:

      【解决方案2】:

      使用修订范围,如

      git log HEAD~1
      

      修订参数的后缀 ~ 表示提交对象 是命名提交对象的第 th 代祖先, 只关注第一代父母。

      【讨论】:

        猜你喜欢
        • 2012-12-03
        • 2010-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-22
        • 2011-08-08
        相关资源
        最近更新 更多