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

Is there a way to output the previous git branch name?

此答案告诉我们如何结帐到上一个分支,并有助于解释 @{-1}

如果我在更改分支之前存储了一些代码并且现在正在考虑处理存储,那么之前的分支很重要。

有没有一种方法可以快速查看上一个分支的名称而无需搜索 git reflog show 最新的 checkout: moving from foo to bar 条目?


更多信息:

这是我忘记以前工作环境的解决方案,这种情况通常发生在午餐回来后。

git rev-parse @{-1} 显示将由 git checkout - 而非分支名称签出的分支的 HEAD 提交。

git branch --contains @{-1} 将列出具有该提交的每个分支。

将带有该提交的分支列为 HEAD 会很有帮助,因为它可以帮助我想起我以前的工作环境,但我不确定该怎么做。

也许这就是你想要的:

git describe --all $(git rev-parse @{-1})

来自 git-describe 手册页:

--all

Instead of using only the annotated tags, use any ref found in refs/ namespace. This option enables matching any known branch, remote-tracking branch, or lightweight tag.

例如,如果我这样做:

$ git checkout mybranch
$ git checkout master
$ git describe --all $(git rev-parse @{-1})

我明白了:

heads/mybranch

如果你只想要名字,你可以使用:

git name-rev $(git rev-parse @{-1}) --name-only

例如:

$ git checkout mybranch
$ git checkout master
$ git name-rev $(git rev-parse @{-1}) --name-only
> mybranch

它比接受的答案更可取,因为它没有在名称中显示 "heads",因此它可以与其他 git 命令链接。