【发布时间】:2012-09-16 11:52:33
【问题描述】:
我想记录所有推送到 Git 存储库的提交。我对所有提交感兴趣,而不仅仅是我在本地签出的分支。我还想查看已经被删除的分支中发生的提交。我只需要一个类似于svn log(在Subversion 中)的命令。有可能吗?
【问题讨论】:
-
--walk-reflogs当我对本地不存在的分支感兴趣时,选项无济于事
标签: git svn version-control branch
我想记录所有推送到 Git 存储库的提交。我对所有提交感兴趣,而不仅仅是我在本地签出的分支。我还想查看已经被删除的分支中发生的提交。我只需要一个类似于svn log(在Subversion 中)的命令。有可能吗?
【问题讨论】:
--walk-reflogs 当我对本地不存在的分支感兴趣时,选项无济于事
标签: git svn version-control branch
我不确定您要的是什么,但我认为这在 git 世界中是不可能的。
我可以克隆你的 repo,并进行一些提交。但我没有义务与你分享。所以有些提交是你永远不会知道的。
同样,如果我确实与您共享提交,我可能会在本地进行 10 次提交,但在将它们发送给您之前将它们压缩为 1 次提交。您将无法判断这 10 个原始提交是否存在。
您可以创建一个本地分支,进行一些提交,然后删除该分支而不将它们合并回来,git gc 很可能永远销毁这些提交,因为它们不再可访问。
因此,有些提交是您永远无法知道的,要么是因为有人制作了它们但从未与您共享它们,要么是因为您制作了它们但后来通过删除引用它们的唯一分支使它们可用于垃圾收集。
如果您想查看您了解的所有提交,gitk --all 可能就是您要查找的内容。它将向您显示可从所有分支(本地或远程)访问的所有提交的图形视图。同样,git log --all 将向您显示可从所有分支访问的所有提交的文本摘要。
如果您专门寻找远程仓库上的悬空提交,我不确定如何执行此操作。 git fetch 默认情况下仅获取可从分支访问的提交;您可以指定-t 以获取可从标签访问的那些;但我don't think you can fetch the remote reflog。
【讨论】: