我们可以使用git checkout -
结帐最后一个分支,但有没有办法找出最后一个分支是什么而不是检查出来?
编辑: 我已经发现我可以使用:
git reflog | grep -i "checkout: moving"|head -1|cut -d' ' -f6
但我想知道是否有一个直接更简单的命令。我正在更新问题以反映这一需求。抱歉不够清楚
答案 0 :(得分:4)
您的样本输出(由git reflog | ...
生成)使其足够清晰。
git rev-parse
命令可以与参考查找语法结合使用,一次完成:
$ git rev-parse --symbolic-full-name @{-1}
refs/heads/stash-exp
$ git rev-parse --abbrev-ref @{-1}
stash-exp
请注意,the gitrevisions
documentation描述了@{-N}
语法。还要注意,如果没有第N个前一个分支,rev-parse
会默默地打印任何内容:
$ git rev-parse --abbrev-ref @{-2} && echo ok || echo fail
master
ok
$ git rev-parse --abbrev-ref @{-3} && echo ok || echo fail
ok
当然,在您可能需要名称的大多数地方,您可以直接使用@{-1}
语法。
答案 1 :(得分:2)
sizeof
是你想要使用的。在这里,你会发现:
你检查的内容在这里很重要; reflog将使用以“checkout”表示的格式,并在查看特定分支时指定“从A移动到B”。
“checkout:moving”的简单grep将为您提供您访问过的分支列表;最后一个位于顶部。
完整性的完整命令:
&
答案 2 :(得分:0)
使用grep -m限制结果:
git reflog | grep -i “checkout: moving” -m 10