0

我想记录推送到 Git 存储库的所有提交。我对所有提交感兴趣,而不仅仅是我在本地签出的分支。我还想查看已经被删除的分支中发生的提交。我需要的只是一个类似于svn log(在 Subversion 中)的命令。有可能吗?

4

1 回答 1

3

我不确定您要的是什么,但我认为在 git 世界中这是不可能的。

我可以克隆您的存储库,并进行一些提交。但我没有义务与你分享。所以有些提交是你永远不会知道的。

同样,如果我确实与您共享提交,我可能会在本地进行 10 次提交,但在将它们发送给您之前将它们压缩为 1 次提交。您将无法判断 10 个原始提交是否存在。

您可以创建一个本地分支,进行一些提交,然后删除该分支而不将它们重新合并,并且git gc很可能永远销毁这些提交,因为它们不再可访问。

因此,有些提交是您永远无法知道的,要么是因为有人制作了它们但从未与您共享它们,要么是因为您制作了它们但后来通过删除引用它们的唯一分支使它们可用于垃圾收集。

如果您想查看您知道的所有提交可能gitk --all就是您要查找的内容。它将向您显示可从所有分支(本地或远程)访问的所有提交的图形视图。同样,git log --all将向您显示可从所有分支访问的所有提交的文本摘要。

如果您专门在远程仓库上寻找悬空提交,我不确定如何执行此操作。git fetch默认情况下仅获取可从分支访问的提交;您可以指定-t从标签中获取那些可访问的;但我认为您无法获取远程 reflog

于 2012-09-16T14:51:27.410 回答