> ## Content Index
> Fetch the complete content index at: https://linuxhandbook.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Switching Branches in Git
- URL: https://linuxhandbook.com/git-switch-branch/
- Published: 2023-08-22T11:01:49.000Z
- Updated: 2023-11-02T06:21:07.000Z
- Description: Here are a few examples to show you how to list local and remote branches and switch between those branches.
- Author: Pratham Patel
- Tags: Using Git, #docs-col

Working on a huge project with multiple contributors requires managing multiple branches in Git.

That means that as the features/branches grow, you will have to manage more and more branches in the future.

```bash
git checkout <BRANCH-NAME>
```

You may also use the switch option:

```
git switch <BRANCH-NAME>
```

The [difference between git switch and checkout](https://linuxhandbook.com/git-switch-checkout/) is that the checkout command is capable of doing a little more than just switching branches.

[What’s the Difference Between Git Switch and Checkout?You can use both git checkout and git switch for switching between branches. But why do we have two commands for the same thing?![](https://linuxhandbook.com/content/images/size/w256h256/2021/08/Linux-Handbook-New-Logo.png)Linux HandbookAbhishek Prakash![](https://linuxhandbook.com/content/images/2021/12/Git-Checkout-vs-git-switch.png)](https://linuxhandbook.com/git-switch-checkout/)

Let's see about switching branches in more detail with examples.

## Local and remote branches

Switching from one branch to another branch is only present if the branch is present locally. So, lets take a look at how to get a list of remote and local branches.

### Get a list of locally available branches

When you intend to switch from one branch to another existing branch, make sure that the intended branch exists locally.

To get a list of all locally available branches, use the following command:

```bash
$ git branch
* master
  switching-branch
```

As of now, I only have two branches available locally. They are `master` and `switching-branch`.

### Get a list of remote branches

Local branches don't always tell the truest story. So, to see the branches that the remote repository has, run the following command.

```bash
$ git branch -r
  origin/HEAD -> origin/master
  origin/new-remote-only-branch
  origin/master
```

As you might have noticed, the local branch `switching-branch` is not in upstream, and the remote branch `new-remote-only-branch` is also not available locally.

This can be a problem when you try to switch to `new-remote-only-branch`.

## Switching local branches

Now that you know how to differentiate between a local and a remote branch, let us dive into how to switch from one branch to another.

When you already have a local branch, simply use the 'git checkout' command with the following syntax:

```bash
git checkout <BRANCH-NAME>
```

This will change your branch from whatever branch you were in earlier, to a branch that you specified.

## Switching remote branches

In case you want to do this for a remote branch, all you have to do is run the `git fetch` command first and then checkout.

```bash
git fetch --all
git checkout <REMOTE-BRANCH-NAME>
```

The `git fetch` command is similar to `git pull` in terms of functionality. The only difference is that `git pull` will download the remote content for the currently active local branch and then, it will execute `git merge` as well.

Let's look at an example:

```bash
$ git fetch --all
Fetching origin

$ git branch
* master
  switching-branch

$ git checkout new-remote-only-branch
Branch 'new-remote-only-branch' set up to track remote branch 'new-remote-only-branch' from 'origin'.
Switched to a new branch 'new-remote-only-branch'

$ git branch
  master
* new-remote-only-branch
  switching-branch
```

Previously, the `new-remote-only-branch` was not present locally. And we did not clone it explicitly. And yet, we were able to switch to the `new-remote-only-branch` as if it were a local branch.

How cool is that?!

## Conclusion

This article covers how you can differentiate between a remote and a local branch (for the purposes of being able to checkout said branch), how to switch to a local branch and how to switch to a remote branch without explicitly cloning it.