假设我有一个这样的图
A---B---C---D (master)
\
\-E---F (HEAD)
如果我执行git log -all - online,我将得到所有6次提交。
但如果图像是
A---B---C---D (master, HEAD)
\
\-E---F
我不会看到E和f。我能得到git告诉我所有的提交,包括那些没有命名的分支吗?
谢谢
假设我有一个这样的图
A---B---C---D (master)
\
\-E---F (HEAD)
如果我执行git log -all - online,我将得到所有6次提交。
但如果图像是
A---B---C---D (master, HEAD)
\
\-E---F
我不会看到E和f。我能得到git告诉我所有的提交,包括那些没有命名的分支吗?
谢谢
当前回答
@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
现在,许多工具将向您显示那些丢失的提交的图形化可视化。
其他回答
git log --reflog
救了我!我在合并头部时丢失了我的,找不到我的lates承诺!没有显示在源树中,但git日志——reflog显示我之前所有的本地提交
我怎么解决这个问题?使用git fsck和日志!
首先创建一个包含丢失(不可达)提交和blob的文件。(注意:如果你做了像git gc这样的事情,那么它会垃圾收集所有提交的文件,你在这里找不到它们!)
$git fsck --lost-found > lost_found.commits
它会给你一个这样的文件:
悬空提交dec2c5e72a81ef06963397a49c4b068540fc0dc3 悬浮blob f8c2579e6cbfe022f08345fa7553feb08d60a975 悬挂blob 0eb3e86dc112332ceadf9bc826c49bd371acc194 悬挂blob 11cbd8eba79e01f4fd7f496b1750953146a09502 悬空提交18733e44097d2c7a800650cea442febc5344f9b3 悬挂blob 1e53a5cdb3ecdde27081ec6e8b31e4070106ee05
然后,您可以使用您喜欢的文本编辑器打开该文件,从那里复制提交/博客哈希值。(*咳嗽* vim宏工作为这个*咳嗽*)
现在你可以用git log——oneline <commit hash>之类的东西从这个提交中返回日志。 或者,gitk, tig或任何其他git查看器都可以工作。
在你的例子中,如果你找到提交F的哈希,日志会显示这样的东西,
A---B---E---F
又快又简单!现在您可以找到所有这些悬空提交背后的上下文。
附注:是的,我知道,很晚了,但哦,好吧,有人可能会在这里找到它,并发现它很有用。(很可能是我在6个月后再次谷歌这个)
当我解决这个问题时,我使用以下命令:
git reflog | awk '{ print $1 }' | xargs gitk
这让我可以可视化最近已经变成无头的提交。
我把这个包在一个名为~/bin/git-reflog-gitk的脚本帮助器中。
编辑:-我的git-reflog-gitk包装是多余的-因为你现在可以直接调用gitk -reflog
就像@Kieran的回答,但对于主机来说: Git log - online -all -graph - decoration $(Git reflog | awk '{print $1}')
@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
现在,许多工具将向您显示那些丢失的提交的图形化可视化。