【发布时间】:2017-03-05 18:52:01
【问题描述】:
我可以重新登录一个特定的分支吗?
git reflog 显示 repo 上的所有历史记录。但我想检查一个特定分支的历史记录,比如production。有没有办法做到这一点?
【问题讨论】:
标签: git git-reflog
我可以重新登录一个特定的分支吗?
git reflog 显示 repo 上的所有历史记录。但我想检查一个特定分支的历史记录,比如production。有没有办法做到这一点?
【问题讨论】:
标签: git git-reflog
但我想检查一个特定分支的历史记录,比如
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 6527925、commit 3474b60、commit 6887f69、commit 21f0e85、commit 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 消息
【讨论】:
git reflog [show] ref 例如,其中 ref 可以是 git 哈希,或者任何 git 可以解析为哈希的东西。例如分支名称:
git reflog production
【讨论】:
如the documentation 中所述,git reflog 采用动作动词(称为<subcommand>)和可选修饰符。该操作默认为show,其可选修饰符是要显示的引用名称。
默认是在HEAD 上显示操作。 (大多数,但不是全部,“日常”命令在和/或通过HEAD 操作,以便对任何其他引用进行操作。因此,git reflog 的声明显示 all em> history 实际上是错误的——但它确实显示了 most,这可能已经足够接近了。)这为您提供了一个直接而明显的答案,即显示应用于特定分支名称 @ 的操作的问题987654328@:
git reflog show production
如文档所述,git reflog show 是git log -g --abbrev-commit --pretty=oneline 的别名,因此您也可以运行:
git log -g --abbrev-commit --pretty=oneline production
获得完全相同的输出。这里的关键开关是 -g,它指示 git log 遍历给定 ref 的 reflog,而不是从 ref 指向的提交到达的提交。
(您可以继续省略 show 动词,因为它仍然是默认值,但在这种情况下,我建议包含它 - 例如,如果您的分支命名为 show 或 expire,则名称将被误认为是动词!)
【讨论】: