29

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

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

4

3 回答 3

41

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

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

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动词,因为它仍然是默认值,但对于这种情况,我建议包括它 - 例如,如果您的分支被命名showexpire名称将被误认为是动词!)

于 2016-10-24T04:59:33.603 回答
8

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

git reflog production

于 2016-10-24T04:59:24.383 回答
1

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

更新的(Git 2.9.5、2017+)命令是git show-branch (-g|--reflog)

 git show-branch --reflog production

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

显示<n>给定 ref 的最新 ref-log 条目。

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

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


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

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

show-branch: 显示 reflog 消息

签字人:Han-Wen Nienhuys

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

于 2021-12-18T00:41:10.637 回答