如何找到在git中检出的最后一个分支

时间:2016-10-27 17:41:49

标签: git git-checkout

我们可以使用git checkout -结帐最后一个分支,但有没有办法找出最后一个分支是什么而不是检查出来?

编辑: 我已经发现我可以使用:

git reflog | grep -i "checkout: moving"|head -1|cut -d' ' -f6

但我想知道是否有一个直接更简单的命令。我正在更新问题以反映这一需求。抱歉不够清楚

3 个答案:

答案 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