【问题标题】:Git reflog a specific branch?Git reflog 一个特定的分支?
【发布时间】:2017-03-05 18:52:01
【问题描述】:

我可以重新登录一个特定的分支吗?

git reflog 显示 repo 上的所有历史记录。但我想检查一个特定分支的历史记录,比如production。有没有办法做到这一点?

【问题讨论】:

    标签: git git-reflog


    【解决方案1】:

    但我想检查一个特定分支的历史记录,比如production

    最近的(Git 2.9.5,2017+)命令是git show-branch (-g|--reflog)

     git show-branch --reflog production
    

    -g/--reflog[=<n>[,<base>]] [<ref>]

    显示<n> 给定参考的最新参考日志条目。

    如果给定<base>,则<n> 条目将从该条目返回。
    <base> 可以指定为计数或日期。

    当没有明确给出<ref> 参数时,它默认为当前分支(或HEAD,如果它是分离的)。


    确保使用 Git 2.35(2022 年第一季度),因为它修复了一个错误:

    参见Han-Wen Nienhuys (hanwen)commit 6527925commit 3474b60commit 6887f69commit 21f0e85commit f246349(2021 年 12 月 2 日)。
    (由Junio C Hamano -- gitster -- 合并到commit 250ca49, 2021 年 12 月 15 日)

    show-branch: 显示 reflog 消息

    签字人:Han-Wen Nienhuys

    之前,--reflog 选项会在 reflog 消息中查找“\t”。
    由于 refs.c 已经解析了 reflog 行,因此从未找到 '\t',并且 show-branch --reflog(man) 总是会说 "(none)" 作为 reflog 消息

    【讨论】:

      【解决方案2】:

      git reflog [show] ref 例如,其中 ref 可以是 git 哈希,或者任何 git 可以解析为哈希的东西。例如分支名称:

      git reflog production

      【讨论】:

      • 不,它没有11111
      【解决方案3】:

      the documentation 中所述,git reflog 采用动作动词(称为<subcommand>)和可选修饰符。该操作默认为show,其可选修饰符是要显示的引用名称。

      默认是在HEAD 上显示操作。 (大多数,但不是全部,“日常”命令在和/或通过HEAD 操作,以便对任何其他引用进行操作。因此,git reflog 的声明显示 all em> history 实际上是错误的——但它确实显示了 most,这可能已经足够接近了。)这为您提供了一个直接而明显的答案,即显示应用于特定分支名称 @ 的操作的问题987654328@:

      git reflog show production
      

      如文档所述,git reflog showgit log -g --abbrev-commit --pretty=oneline 的别名,因此您也可以运行:

      git log -g --abbrev-commit --pretty=oneline production
      

      获得完全相同的输出。这里的关键开关是 -g,它指示 git log 遍历给定 ref 的 reflog,而不是从 ref 指向的提交到达的提交。

      (您可以继续省略 show 动词,因为它仍然是默认值,但在这种情况下,我建议包含它 - 例如,如果您的分支命名为 showexpire,则名称将被误认为是动词!)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-16
        • 1970-01-01
        • 2020-09-27
        • 2014-11-11
        • 2012-11-22
        • 2019-09-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多