submitted 3 years ago* (last edited 3 years ago) by [M] to c/git@programming.dev
 

You can use git switch - to switch to the previous branch. In the following example, we see switching back and forth between branches main and my_dev_branch:

C:\git\my-repo [my_dev_branch]> git switch -
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
C:\git\my-repo [main ≡]> git switch -
Switched to branch 'my_dev_branch'
C:\git\my-repo [my_dev_branch]>

Edit: Old habits die hard. Updated to use switch instead of checkout since switch has a clearer responsibility. Obviously they work exactly the same for this scenario.

all 11 comments

sorted by: hot top controversial new old
[–] 1 point 3 years ago* (1 child)

Which follows the similar functionality used by the cd - command to switch to the previous directory you were in. Very handy!

  • source
  • hideshow 2 child comments
  • [–] 1 point 3 years ago (1 child)
  • [–] 0 points 3 years ago (1 child)

    There's more! Well, it's more a bash thing than a cd thing.. in bash the variable $_ refers to the last argument to the previous command. So you can do the following:

    > mkdir -p my/nested/dir
    > cd $_
    > pwd
    /home/user/my/nested/dir
    

    It's handy for a whole host of things, like piping/touching then opening a file, chown then chmod, etc.

  • source
  • parent
  • hideshow 2 child comments
  • On many terminal emulators you can also use Alt-. to search through your history of previous arguments, so mkdir foo followed by cd [Alt-.] will populate your command line with cd foo for example. If you have some other command in between you can just hit Alt-. repeatedly

  • source
  • parent
  • [–] 1 point 3 years ago

    Note that git checkout - / git switch - examine reflog to find previous branch. Which means if you renamed the branch, at least current version of Git would be unable to run git switch -.

  • source
  • [–] 0 points 3 years ago (2 children)
  • [–] 0 points 3 years ago (1 child)

    What's the difference? Genuine question

  • source
  • parent
  • hideshow 2 child comments
  • [–] 0 points 3 years ago (1 child)

    Well one starts with an s, the other with a c... :P

    They changed the command to clarify what it does, checkout was / is used for switching branches as well as branch creation but has connotations of doing some locking in the repo from older vcs software.... I think. the new commands are switch and branch. check the docs

    Idk what the deal is with switch, I thought it wasn't supposed to be creating branches but right in the docs there's a flag for it???

    Im the kind of user that just deletes .git and starts over when I f up the repo, so take my git advice with a tablespoon of salt.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 0 points 3 years ago (1 child)

    I switch to using switch since git switch auto-creates the local branch from the remote branch, if the branch doesn't exist yet, and a remote branch with the corresponding name exists.
    Also git switch -c for auto-creating a new branch, even if there is no remote branch for it

  • source
  • parent
  • hideshow 2 child comments