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.
Which follows the similar functionality used by the
cd -
command to switch to the previous directory you were in. Very handy!You can do what 👀
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.
On many terminal emulators you can also use Alt-. to search through your history of previous arguments, so
mkdir foo
followed bycd [Alt-.]
will populate your command line withcd foo
for example. If you have some other command in between you can just hit Alt-. repeatedly
… how have I not ever come across that before?!
This thread has been invaluable for me lol
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 rungit switch -
.Use
switch
, boomer!NEVER!!
What’s the difference? Genuine question
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.
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.
Alsogit switch -c
for auto-creating a new branch, even if there is no remote branch for itIf I remember it correctly,
git checkout
also automatically creates the local branch from the remote branch (of the same name), and sets up tracking.