git-switch - Linux


git-switch allows you to quickly and efficiently change between tracked branches, revisions, or stashes in a Git repository. It offers an intuitive and concise syntax, empowering you to navigate your project’s history with ease.


git switch [-q] [-C <commit-ish>] [-c] [-f] <branch-name>
git switch [-q] [-C <commit-ish>] [-c] [-f] <stash-ref>


<branch-name> | <stash-ref>
The target branch or stash to switch to.


  • -q: Quiet mode, suppresses informational messages.
  • -C <commit-ish>: Change to a new branch starting from a specific commit-ish (e.g., branch name, tag, or commit hash).
  • -c: Create a new branch if it doesn’t exist.
  • -f: Force checkout, discarding any uncommitted changes. Use with caution.


Switching to a Branch

git switch main

Switching to a Stash

git switch stash@{0}

Switching to a Specific Commit and Creating a New Branch

git switch -c -C 123456 my-new-branch

Force Checkout with Uncommitted Changes

Caution: Use -f only if necessary. It can lead to data loss.

git switch -f my-branch

Common Issues

  • Conflict with uncommitted changes: If you switch to a branch with conflicting changes, you’ll need to resolve them before switching back.
  • Non-existent target: Using non-existent branch names or stash references will result in an error.


  • git-checkout: Use git-switch as a quick alias for git-checkout -b.
  • git-stash: Quickly switch to a stashed state and back using git-switch.

Related Commands

  • git-branch: List and manage branches.
  • git-add: Stage changes for commit.
  • git-stash: Save and restore uncommitted changes.