Git日志显示HEAD点到底在哪里?

Git log to show where exactly HEAD points?

有没有办法让 git 日志以不同的方式显示以下情况:(a) HEAD 指向分支指针和分支指针指向提交,(b) HEAD 直接指向提交,以及分支指针指向同一个提交?

例如,如果我这样做

git commit -m'My commit'
git log --oneline --graph --decorate
* 655c6f1 (HEAD, master) My commit

所以现在的情况是:655c6f1 <- master <- HEAD。但如果我这样做

git checkout 655c6f1
git log --oneline --graph --decorate
* 655c6f1 (HEAD, master) My commit

所以现在的情况是:655c6f1 <- master,655c6f1 <- HEAD。 (我处于分离的 HEAD 状态。)

但在这两种情况下,git log 输出是相同的。如何让git日志区分这两种情况?

Git 2.4+(2015 年 4 月)确实向您展示了 HEAD 分支和 detached HEAD after checkout.
之间的明显区别 参见 commit 51ff0f2

这是您在 HEAD 引用分支时看到的内容。

C:\Users\vonc\prog\b2d>git log --oneline --graph --decorate -3
* 8956c85 (HEAD -> master, origin/master) apache/(run/kill): runs/kills gnupg2 as well
* 216834a gitolite/run: uses {fgrpath}/.init_envs.sh as a marker

注意 HEAD -> master 部分。

并且在分离 HEAD 时:

C:\Users\vonc\prog\b2d>git log --oneline --graph --decorate -3
* 8956c85 (HEAD, origin/master, master) apache/(run/kill): runs/kills gnupg2 as well
* 216834a gitolite/run: uses {fgrpath}/.init_envs.sh as a marker

甚至Windows has Git 2.4+ now: PortableGit-2.5.0-64-bit.7z.exe.