Is there any way to git checkout previous branch?

浪尽此生 提交于 2019-11-26 19:16:12
Karl Bielefeldt

From the release notes for 1.6.2

@{-1} is a way to refer to the last branch you were on. This is
accepted not only where an object name is expected, but anywhere a branch name is expected and acts as if you typed the branch name.
E.g. git branch --track mybranch @{-1}, git merge @{-1}, and
git rev-parse --symbolic-full-name @{-1} would work as expected.

and

git checkout - is a shorthand for git checkout @{-1}.

The simplest way of doing this nowadays is:

git checkout -

... which is an alias of:

git checkout @{-1}

If you want to know more about this, I wrote an entire article about it here: Checkout The Previous Branch In Git.

As @Karl points out and from git checkout manual:

As a special case, the "@{-N}" syntax for the N-th last branch checks out the branch (instead of detaching). You may also specify - which is synonymous with "@{-1}".

So both git checkout - and git checkout @{-1} would work in this case

Closest I believe is using the git reflog and parse the latest moving from branch1 to branch2 and git checkout branch1

Just adding some more detail to the previous answers to understand the mechanism by which git checkout @{-N} works. It walks the reflog to inspect the checkout history, so if you wanted to implement something similar on your own you should be able to parse the output of git reflog looking for checkout: lines. You can check the implementation in the git source sha1_name.c, specifically the function interpret_nth_prior_checkout.

I landed to this question with the same thought to checkout my previous branch. I'm using ohmyz in Mac. Below command helped me.

$ gco -
$ git checkout -

The most popular solution is:

git checkout @{-N}

Where N - step count of the branches to move back on the checkout history.

Here are pointers to the parts of Git’s documentation that describe the git checkout - and git checkout @{-1} solutions given by the other answers:

  • When specifying a Git revision for any command, @{-<n>}, e.g. @{-1} means “the nth branch/commit checked out before the current one.” The documentation for git checkout <branch> reiterates: “You can use the @{-N} syntax to refer to the N-th last branch/commit checked out using git checkout operation.”

  • For the <branch> argument of git checkout, “you may also specify ‘-’ which is synonymous to ‘@{-1}’.”

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!