有没有办法输出以前的git分支名称?

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的分支将很有帮助,因为它可以使我想起我以前的工作环境,但是我不确定如何做到这一点。

lar*_*sks 6

也许这就是您想要的:

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 describe --all @ {-1}`并得到相同的结果。 (2认同)

Gab*_*eim 5

如果您只想要名称,则可以使用:

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 命令链接。

  • 好的!`git name-rev @{-1} --name-only` 也有效 (3认同)