我使用ReinH.com中提到的git rebase -i origin/master
在Git中压缩了一些提交。
压缩一些提交后,有没有办法查看原始提交?是否有可能获得提交的“差异”?我能获得SHA吗?
如果可能,运行git gc
后仍然可以吗?
答案 0 :(得分:23)
压缩提交的重点是重写历史记录,用一次提交替换原始提交。
那就是说,很难让事情在git中消失。获得这些提交的最简单方法是通过git reflog
。请尝试git reflog <branch>
获取您重新分支的分支的先前位置。
您应该能够在交互式rebase之前找到分支尖端的SHA1。 (如果分支不再存在,请尝试git reflog show
查看HEAD
的reflog。它也应该在那里,还有更多其他活动要进行排序。)
一旦你拥有了SHA1,你就是黄金 - 使用git log -p
或gitk
来查看提交并查看它们的差异。 (如果你想用它做很多事情,那就在那里创建一个分支,这样你就不必一遍又一遍地粘贴SHA1。)
在运行git gc
之后仍然可以执行此操作,只要您压缩这些提交已经很长时间了。 gc
仅在某个年龄段修剪无法访问的悬挂物品。
如果可以通过reflog中的任何内容访问提交,则可以认为提交是可以访问的,并且reflog将 90天到期,因此您通常可以依赖那些原始提交三个月。