假设我有一个这样的图
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告诉我所有的提交,包括那些没有命名的分支吗?
谢谢
当前回答
当我解决这个问题时,我使用以下命令:
git reflog | awk '{ print $1 }' | xargs gitk
这让我可以可视化最近已经变成无头的提交。
我把这个包在一个名为~/bin/git-reflog-gitk的脚本帮助器中。
编辑:-我的git-reflog-gitk包装是多余的-因为你现在可以直接调用gitk -reflog
其他回答
@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 reflog
在这里你会发现一个历史提交完成的屏幕,就像这样:
在这一点上,你只需要找到你需要的HEAD@{X},创建一个临时分支,并像这样移动到它:
git checkout -b temp_branch HEAD@{X}
这样你就会有一个临时的分支来处理你丢失的提交,而不会重基或者破坏你的git存储库。
希望这对你有所帮助……
当我解决这个问题时,我使用以下命令:
git reflog | awk '{ print $1 }' | xargs gitk
这让我可以可视化最近已经变成无头的提交。
我把这个包在一个名为~/bin/git-reflog-gitk的脚本帮助器中。
编辑:-我的git-reflog-gitk包装是多余的-因为你现在可以直接调用gitk -reflog
如果你使用Git Extensions GUI,如果你选择“View -> show reflog references”,它可以显示一个悬浮提交的图形可视化。 这将显示树中的悬空提交,就像所有其他引用的提交一样。这样更容易找到你要找的东西。
请参见此图像进行演示。图像上的提交C2, C3, C4和C5是悬空的,但仍然可见。