Hen*_*yth 4 git branch git-stash git-checkout git-reflog
该答案说明了如何检出上一个分支,并有帮助地说明了@{-1}:https : //stackoverflow.com/a/7207542/3150057
如果我在更改分支之前保存了一些代码,并且正在考虑对隐藏进行工作,则上一个分支很重要。
有没有一种方法可以快速查看上一个分支的名称而无需搜索git reflog show最新checkout: moving from foo to bar条目?
更多信息:
这是解决我忘记以前工作环境的一种方法,这种情况通常是在午餐后回来的。
git rev-parse @{-1}显示将由分支签出的分支的HEAD提交,git checkout -但不显示分支名称。
git branch --contains @{-1} 将列出该提交的每个分支。
列出具有该提交作为HEAD的分支将很有帮助,因为它可以使我想起我以前的工作环境,但是我不确定如何做到这一点。
也许这就是您想要的:
git describe --all $(git rev-parse @{-1})
Run Code Online (Sandbox Code Playgroud)
从git-describe手册页:
--all不仅要使用带注释的标签,还应使用在refs /名称空间中找到的所有ref。使用此选项可以匹配任何已知分支,远程跟踪分支或轻量级标签。
因此,例如,如果我这样做:
$ git checkout mybranch
$ git checkout master
$ git describe --all $(git rev-parse @{-1})
Run Code Online (Sandbox Code Playgroud)
我懂了:
heads/mybranch
Run Code Online (Sandbox Code Playgroud)
如果您只想要名称,则可以使用:
git name-rev $(git rev-parse @{-1}) --name-only
Run Code Online (Sandbox Code Playgroud)
例如:
$ git checkout mybranch
$ git checkout master
$ git name-rev $(git rev-parse @{-1}) --name-only
> mybranch
Run Code Online (Sandbox Code Playgroud)
它比接受的答案更可取,因为它在名称中不显示“头”,因此可以与其他 git 命令链接。