所有git提交列表?

假设我有这样的图表:

A---B---C---D (master) \ \-E---F (HEAD) 

如果我做git log --all --oneline ,我会得到我所有的六个提交。

但是如果图表是

 A---B---C---D (master, HEAD) \ \-E---F 

我不会看到E和F.我可以让git告诉我所有的提交,包括没有被命名的分支上的提交吗?

谢谢

不是特别容易,如果你失去了指向尖端的指针,就好像在大海捞针一样。 你可以find所有看起来没有被引用的提交 – git fsck --unreachable会为你做这个 – 但是这将包括你在git commit --amend后抛弃的git commit --amend ,old在分支上提交你重新启动了等等等等。所以看到所有这些提交是相当可能太多的信息不得不通过。

因此,轻浮的答案是,不要忘记你感兴趣的事情。更严重的是,reflogs将持有过去60天左右默认使用的所有提交的引用。 更重要的是,他们会给出一些关于这些承诺的背景。

当我解决这个问题时,我使用下面的命令:

 git reflog | awk '{ print $1 }' | xargs gitk 

这让我可视化最近已经成为无头的提交。

我把它封装在一个名为~/bin/git-reflog-gitk的脚本助手中。

尝试:

 git log --reflog 

它通过假装reflogs( git reflog )提到的所有对象在命令行中列出为<commit>来列出所有的git提交。

像@Kieran的答案,但对于控制台: git log --oneline --all --graph --decorate $(git reflog | awk '{print $1}')

我如何解决这个问题? 使用git fsck和日志logging!

首先创build一个包含丢失(无法访问)提交和blob的文件。 (注意:如果你做了像git gc那么它将垃圾收集所有提交,你不会在这里find它们!)

 $git fsck --lost-found > lost_found.commits 

这给你一个像这样的文件:

悬挂提交dec2c5e72a81ef06963397a49c4b068540fc0dc3
晃来晃去blob f8c2579e6cbfe022f08345fa7553feb08d60a975
dangling blob 0eb3e86dc112332ceadf9bc826c49bd371acc194
晃来晃去blob 11cbd8eba79e01f4fd7f496b1750953146a09502
悬挂提交18733e44097d2c7a800650cea442febc5344f9b3
dangling blob 1e53a5cdb3ecdde27081ec6e8b31e4070106ee05

然后你可以用你最喜欢的文本编辑器打开这个文件,从那里复制提交/博客哈希值。 (* 咳嗽 * vimmacros伟大的这个* 咳嗽 *)

现在你可以使用git log --oneline <commit hash>这样的提交来git log --oneline <commit hash> 。 另外,gitk,tig,或任何其他的git查看器应该工作。

在你的情况下,如果你发现提交F的哈希日志会告诉你这样的事情,

 A---B---E---F 

快捷方便! 现在你可以find所有这些悬挂提交的背景。

PS是的,我知道,后期,但是,哦,有人可能会发现它在这里,发现它是有用的。 (很可能我在6个月内,当我谷歌再次)

我有幸通过查看位于.git/logs/HEAD的reflog来恢复提交

然后,我不得不慢慢地到文件末尾 ,我发现我刚刚失去的提交。

我们会git log有时不好,得到所有提交的细节,所以要查看此…

对于Mac:进入你的git项目并input:

 $ nano .git/logs/HEAD 

查看你的所有提交,或者:

 $ gedit .git/logs/HEAD 

要查看你的所有提交,

那么你可以在任何你喜欢的浏览器中进行编辑。

@bsimmons

 git fsck --lost-found | grep commit 

然后为每一个创build一个分支:

 $ git fsck --lost-found | grep commit Checking object directories: 100% (256/256), done. dangling commit 2806a32af04d1bbd7803fb899071fcf247a2b9b0 dangling commit 6d0e49efd0c1a4b5bea1235c6286f0b64c4c8de1 dangling commit 91ca9b2482a96b20dc31d2af4818d69606a229d4 $ git branch branch_2806a3 2806a3 $ git branch branch_6d0e49 6d0e49 $ git branch branch_91ca9b 91ca9b 

现在,许多工具将向您显示这些丢失的提交的graphics可视化。