gitbranchgit-checkoutgit-stashgit-reflog

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


This answer tells how to checkout to the previous branch, and helpfully explains @{-1}: https://stackoverflow.com/a/7207542/3150057

The previous branch is important if I stashed some code before changing branch, and am now thinking about working on the stash.

Is there a way to quickly see the name of the previous branch without searching git reflog show for the latest checkout: moving from foo to bar entry?


More info:

This is a solution to my forgetfulness of my previous working context, which usually happens after coming back from lunch.

git rev-parse @{-1} shows the HEAD commit of the branch that would be checked-out by git checkout - but not the branch name.

git branch --contains @{-1} will list every branch with that commit.

Listing the branch(es) with that commit as HEAD would be helpful, as it could help remind me of my previous working context, but I'm not sure how to do that.


Solution

  • Maybe this is what you want:

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

    From the git-describe man page:

    --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.

    So for example, if I do this:

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

    I see:

    heads/mybranch