确认不在 git log 中显示的提交的内容。确认一下不在 git log 中显示的提交的具体内容

在执行了 rebase 和 squash 操作后,最新的源代码中消失了一些代码。

现在需要将其恢复。

为了省去麻烦,我想要知道代码存在时的哈希值。

但是在 git log 中无法确认 squash 后的提交的哈希值。

这真是令人困惑。

当谈及这个时候的故事。

或许这是理所当然的事情,但作为备忘录记下来。

回答

查看 .git/logs/HEAD。

详细

※ 由于不方便在此展示我所恢复的工作代码,所以我将采用开源软件进行说明。

这就是git log的状态。
最后的提交合并了一些提交。
当然,已合并的提交不会显示出来。

$ git log
commit bda4848fdbff6bf95fe45eeaae0d972cce1837ac
Author: tommarute <tommarute@gmail.com>
Date:   Wed Dec 19 19:55:42 2018 +0900

    marathon-sd - use Tasks.Ports instead of PortDefinitions.Ports if RequirePorts is false (#5022)

    Signed-off-by: tommarute <tommarute@gmail.com>

commit dbd1d58c894775c0788470944b818cc724f550fb
Author: Simon Pasquier <spasquie@redhat.com>
Date:   Mon Dec 17 16:12:01 2018 +0100

    *: cut v2.6.0 (#5008)

    Signed-off-by: Simon Pasquier <spasquie@redhat.com>

然而,在.git/logs/HEAD中仍然存在着日志记录。

$ less .git/logs/HEAD
(omit...)
612e4f44dd3c9d11452fa469c8658850365e3ee0 3bdfd8f909275f08a84fe59aac5529fbc898d075 tommarute <tommarute@gmail.com> 1545911430 +0900      commit: Rename marathonTestAppListWithPortDefinitionsRequirePorts and its test
3bdfd8f909275f08a84fe59aac5529fbc898d075 25eb66b5c26b2422e52a1b3412e39bed0f768cd3 tommarute <tommarute@gmail.com> 1545911520 +0900      commit: Undo marathonTestAppListWithPortDefinitions
25eb66b5c26b2422e52a1b3412e39bed0f768cd3 76f2adc84401a2def5d8c7c34bd445a1f98f3cc7 tommarute <tommarute@gmail.com> 1545911700 +0900      commit: Remove marathonTestAppListWithContainerNetworkAndPorts

只需要把你想要的提交的哈希值放入URL中,然后在浏览器中查看即可!

https://github.com/tommarute/prometheus/commit/{hash} 的这个链接

以上 – 上述的

广告
将在 10 秒后关闭
bannerAds