【问题标题】:git log show one commit id onlygit log 仅显示一个提交 ID
【发布时间】:2015-10-05 13:24:37
【问题描述】:

我需要一些帮助。是否可以只显示一个提交 ID?由于 git log -3 显示从 1 到 3 的日志,我只想显示 3。什么可能的命令将匹配它?

我使用命令

       git log -3 --pretty=format:"%h"

结果是

       ffbef87
       cf0e073
       1c76c5d

我只想显示 1c76c5d 而已。

【问题讨论】:

    标签: git git-commit git-log


    【解决方案1】:

    您可以使用当前提交中的git show referencing the third parent(即来自HEAD 的第二个祖先)。此外,git show 接受与git log 相同的格式字符串:

    git show HEAD~2 --pretty=format:"%h" --no-patch
    

    更新(2016-12-01

    更好的方法是使用 rev-parse plumbing command--short 选项来输出缩写(7 个字符)提交 SHA-1:

    git rev-parse --short HEAD~2
    

    或者您也可以指定提交 SHA-1 的确切长度:

    git rev-parse --short=4 HEAD~2
    

    【讨论】:

    • 当我使用 git show head~3 --pretty=format:"%h" --no-patch 时,它说致命:不明确的参数 'HEAD~3': unknown revision or path not in工作树。使用 '--' 将路径与修订分开,如下所示:'git [...] -- [...]'
    • 难道head~2 是你历史上的第一个提交?
    • 要引用问题中的提交,您需要使用head~2
    • @KasunSiyambalapitiya 因为git show 还输出与提交相关的差异(即补丁),但在这种情况下我们对此不感兴趣。
    • @GitSyncApp --no-patch 抑制 git show 的差异输出。
    【解决方案2】:

    至少从 git 版本 2.3.8 开始,您可以使用--skip 选项:

       git log -1 --skip 2 --pretty=format:"%h"
    

    不确定哪些早期版本的 git 支持--skip

    【讨论】:

      【解决方案3】:

      有一个工具:

      git log -3 --pretty=format:"%h" | tail -n 1
      

      您可以使用以下标志包含 n 哈希字符(而不是默认值):

      --abbrev=n 
      

      Unix 哲学的相关部分

      1) 让每个程序做好一件事。要完成一项新工作,请重新构建而不是通过添加新“功能”使旧程序复杂化。

      2) 期望每个程序的输出成为另一个未知程序的输入。不要用无关信息使输出混乱。避免严格的列式或二进制输入格式。不要坚持交互式输入。

      ... [即]

      • 编写只做一件事并做好的程序。
      • 编写程序以协同工作。

      https://en.wikipedia.org/wiki/Unix_philosophy

      【讨论】:

        猜你喜欢
        • 2015-04-02
        • 2021-04-29
        • 2015-10-23
        • 1970-01-01
        • 2014-01-19
        • 2010-12-30
        • 2021-10-26
        • 2012-12-23
        • 2015-10-09
        相关资源
        最近更新 更多