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.

  • vampatori@feddit.uk
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    1 year ago

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

      • vampatori@feddit.uk
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 year ago

        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.

        • zygo_histo_morpheus@programming.dev
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          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

    • fades@beehaw.org
      link
      fedilink
      English
      arrow-up
      0
      arrow-down
      1
      ·
      1 year ago

      … how have I not ever come across that before?!

      This thread has been invaluable for me lol

  • Jakub Narębski@programming.dev
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year 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 -.

      • mvirts@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 year ago

        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.

        • Ray Gay@programming.dev
          link
          fedilink
          English
          arrow-up
          0
          ·
          1 year ago

          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

          • Jakub Narębski@programming.dev
            link
            fedilink
            arrow-up
            2
            ·
            1 year ago

            If I remember it correctly, git checkout also automatically creates the local branch from the remote branch (of the same name), and sets up tracking.