【问题标题】:Is there a way to cause git-reflog to show a date alongside each entry?有没有办法让 git-reflog 在每个条目旁边显示一个日期?
【发布时间】:2013-06-26 11:53:23
【问题描述】:

默认情况下,git-reflog 命令不会在每个条目旁边显示日期,这让我感到奇怪的疏忽;我认为这会很有帮助。

是否有任何命令行选项或其他调整可用于使其显示何时添加每个 reflog 条目? manpage 不会出现...

【问题讨论】:

    标签: git git-reflog reflog


    【解决方案1】:

    根据手册页,您可以使用 git log 选项,例如,

    git reflog --pretty=short
    
    git reflog --date=iso
    

    【讨论】:

    • 这将用日期替换头部编号(或任何正确的术语)。两个都可以吗?
    • @Marco 看来您必须使用自定义格式:git reflog --format='%C(auto)%h %<|(17)%gd %C(blue)%ci%C(reset) %s'。我为此添加了一个别名:github.com/blueyed/dotfiles/commit/…
    • @blueyed 不太一样 - reflog 命令中的 --date=iso 显示了创建该 reflog 条目的时间,而不是提交的时间。仍然感谢您的别名,因为我用它来制作更漂亮的 reflog。
    • 您可以将两者结合起来:git reflog --date=iso --pretty=short
    • git reflog --date=iso 正是我要找的,带日期的单行字。
    【解决方案2】:

    您可以使用git log--walk-reflogs 变体:

    git log -g
    

    默认情况下这是相当冗长的,并且会打印日期等。您可以使用标准的--pretty= 标志对其进行格式化。

    您也可以直接使用带有--pretty= 标志的reflog 命令来格式化输出。

    git reflog --pretty='%cd %h %gd %gs'
    

    在上述格式中,%cd 在正常 reflog 输出的左侧显示提交日期。

    【讨论】:

    • %cd,显示 reflog 指向的提交日期,不幸的是,这不是我(或 OP)所追求的:我们想要 reflog 条目的日期。
    • git log --walk-reflogs --date=iso 让我开心
    • git reflog --pretty='%cd %h %gd %gs'可以多彩吗?
    【解决方案3】:

    您可以使用自定义格式:

    git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)'
    

    在上述格式中,%h 是提交哈希,%cr 是相对提交者日期,%gs 是 reflog 主题,%s 是提交主题。查看git-log docs 以获取其他可能的占位符。例如,使用 %ci 而不是 %cr 将显示绝对提交日期。

    您可以使用自定义 pretty 格式将其保存在您的 ~/.gitconfig 中,并通过别名引用它:

    [alias]
        rl = reflog --pretty=reflog
    [pretty]
        reflog = %C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)
    

    【讨论】:

    • 问题在于%gd 显示的日期与@{now} 显示的日期不同。在搜索 reflog 时,知道确切的时间非常重要(例如,“我知道它在 8:57 处于正确的状态”)。
    • @ErikE - 只需将 cr 更改为 ci 即可获取每个操作的完整时间戳:git reflog --format='%C(auto)%h %&lt;|(20)%gd %C(blue)%ci%C(reset) %gs (%s)'
    • 而不是 (20)%gd ; (17)%gd 似乎更好的对齐方式
    【解决方案4】:

    告诉git以什么格式,要么计数reflog条目,要么定时reflog条目,即

    $ git reflog @{now}
    
    $ git reflog @{0}
    

    【讨论】:

    • 我的程序员不喜欢 {} 中的“自然语言”日期,但很高兴这种技术也适用于 --date=iso
    【解决方案5】:

    注意 git 2.10(2016 年第三季度)改进了有关日期的文档 git reflog

    请参阅commit 642833dcommit 1a2a1e8(2016 年 7 月 27 日)和 commit d38c7b2commit 522259dcommit 83c9f95commit 2b68222(2016 年 7 月 22 日)Jeff King (peff)
    帮助者:Jeff King (peff)
    (由 Junio C Hamano -- gitster -- 合并于 commit 0d32799,2016 年 8 月 8 日)

    rev-list options is updated:

    输出中的 reflog 指示符可能显示为 ref@{Nth}(其中 Nth 是 reflog 中的倒序索引)或 ref@{timestamp}(带有该条目的时间戳),具体取决于一些规则.

    It includes: - 关于--date=raw的更新:

    将日期显示为自纪元 (1970-01-01 00:00:00 UTC) 以来的秒数,后跟一个空格,然后是时区作为与 UTC 的偏移量(+-,带有四个数字;前两个是小时,后两个是分钟)。
    即,好像时间戳被格式化为strftime("%s %z"))。
    请注意-local 选项不会影响seconds-since-epoch 值(始终以 UTC 测量),但确实会切换随附的 时区值。

    还有一个新选项:--date=unix

    将日期显示为 Unix 纪元时间戳(自 1970 年以来的秒数)。
    --raw 一样,它始终采用 UTC,因此 -local 无效。

    【讨论】:

      【解决方案6】:

      如果只想查看相对于当前时间的日期,可以使用以下命令:

      git reflog --date=relative
      

      为了节省一些输入,您可以为其创建一个 git 别名(rl - reflog 的缩写):

      git config --global alias.rl "reflog --date=relative"
      

      并改用别名,就像这样(末尾的-10 是显示最后10个动作):

      git rl -10
      

      【讨论】:

        【解决方案7】:

        git reflog --pretty=medium

        ...但是他们真的很难找到(git-log 选项没有 bash 完成,log 手册页没有记录各种漂亮的内置配置文件的占位符字符串,另外还有与默认的git-log 格式仍有一些差异,例如您必须通过--abbrev)

        【讨论】:

          【解决方案8】:

          使用 ohmyzsh 将git reflog 输出格式化为glol

          git reflog --pretty='%Cred%h%Creset -%C(auto)%d%Creset %gs %Cgreen(%cr) %C(bold blue)<%an>%Creset'
          

          使用 ohmyzsh 将git reflog 输出格式化为glod

          git reflog --pretty='%Cred%h%Creset -%C(auto)%d%Creset %gs %Cgreen(%ad) %C(bold blue)<%an>%Creset'
          

          我用这两个别名grlolgrlod 和其他一些别名和函数为ohmyzsh 制作了一个自定义插件git-mnz

          ** 抱歉没有给git插件发PR,但是有hundreds PR waiting to be merged..

          【讨论】:

            【解决方案9】:

            git log --walk-reflogs --date=iso

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-04-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多