获取Git中压缩提交的信息

时间:2010-08-29 12:36:04

标签: git

我使用ReinH.com中提到的git rebase -i origin/master在Git中压缩了一些提交。

压缩一些提交后,有没有办法查看原始提交?是否有可能获得提交的“差异”?我能获得SHA吗?

如果可能,运行git gc后仍然可以吗?

1 个答案:

答案 0 :(得分:23)

压缩提交的重点是重写历史记录,用一次提交替换原始提交。

那就是说,很难让事情在git中消失。获得这些提交的最简单方法是通过git reflog。请尝试git reflog <branch>获取您重新分支的分支的先前位置。

您应该能够在交互式rebase之前找到分支尖端的SHA1。 (如果分支不再存在,请尝试git reflog show查看HEAD的reflog。它也应该在那里,还有更多其他活动要进行排序。)

一旦你拥有了SHA1,你就是黄金 - 使用git log -pgitk来查看提交并查看它们的差异。 (如果你想用它做很多事情,那就在那里创建一个分支,这样你就不必一遍又一遍地粘贴SHA1。)

在运行git gc之后仍然可以执行此操作,只要您压缩这些提交已经很长时间了。 gc仅在某个年龄段修剪无法访问的悬挂物品。

如果可以通过reflog中的任何内容访问提交,则可以认为提交是可以访问的,并且reflog将 90天到期,因此您通常可以依赖那些原始提交三个月。