如何找到 git 签出的最后一个分支
How to find the last branch checked out in git
我们可以使用 git checkout -
检查最后一个分支,但是有没有办法只找出最后一个分支而不检查它?
编辑:
我已经发现我可以使用:
git reflog | grep -i "checkout: moving"|head -1|cut -d' ' -f6
但是我想知道有没有直接更简单的命令。我正在更新问题以反映这种需求。抱歉不够清楚
git reflog
就是你要用的。在这里,您会发现:
- 您上次提交的内容(由 "commit" 表示)
- 您签出的内容(由 "checkout" 表示)
- 当你拉动时(用 "pull" 表示)
您查看的内容在这里很重要; reflog 将使用用 "checkout" 表示的格式,并在查看特定分支时指定 "moving from A to B"。
"checkout: moving" 的简单 grep 将为您提供您访问过的分支的列表;最后一张在最上面。
完整的完整命令:
git reflog | grep -i "checkout: moving"
您的示例输出(由 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 描述了 @{-<em>N</em>}
语法。还要注意,如果没有第 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}
语法。
使用 grep -m 限制结果:
git reflog | grep -i “checkout: moving” -m 10
我们可以使用 git checkout -
检查最后一个分支,但是有没有办法只找出最后一个分支而不检查它?
编辑: 我已经发现我可以使用:
git reflog | grep -i "checkout: moving"|head -1|cut -d' ' -f6
但是我想知道有没有直接更简单的命令。我正在更新问题以反映这种需求。抱歉不够清楚
git reflog
就是你要用的。在这里,您会发现:
- 您上次提交的内容(由 "commit" 表示)
- 您签出的内容(由 "checkout" 表示)
- 当你拉动时(用 "pull" 表示)
您查看的内容在这里很重要; reflog 将使用用 "checkout" 表示的格式,并在查看特定分支时指定 "moving from A to B"。
"checkout: moving" 的简单 grep 将为您提供您访问过的分支的列表;最后一张在最上面。
完整的完整命令:
git reflog | grep -i "checkout: moving"
您的示例输出(由 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 描述了 @{-<em>N</em>}
语法。还要注意,如果没有第 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}
语法。
使用 grep -m 限制结果:
git reflog | grep -i “checkout: moving” -m 10