获取所有Git提交的列表,包括“丢失”的提交。

268
假设我有一个像这样的图表:
A---B---C---D (master)
     \
      \-E---F (HEAD)

如果我运行git log --all --oneline命令,我将得到我所有的六个提交记录。
但是如果图形是:
A---B---C---D (master, HEAD)
     \
      \-E---F

我将不会看见 E 和 F。我能让 Git 告诉我所有的提交记录,包括那些没有命名的分支吗?

12个回答

3

@bsimmons

git fsck --lost-found | grep commit

然后为每个功能创建一个分支:
$ 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

现在有许多工具可以展示给你失去的提交的图形化可视化。


2
如果你使用 Git Extensions GUI,它可以在你勾选“视图->显示 Reflog 引用”时向你展示挂起的提交的图形可视化。这样就能像其他被引用的提交一样展示树中的挂起提交,使得查找更加容易。请参见 this image 以获得演示。图片上的提交 C2、C3、C4 和 C5 是挂起的但仍然可见的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接