所有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可视化。