Pull a certain branch from the remote server
Categories:
Mastering Git: Pulling a Specific Branch from a Remote Repository

Learn how to effectively pull a specific branch from a remote Git repository, understanding the commands and best practices for managing your local and remote branches.
Git is an essential tool for version control, and managing branches is a core part of collaborative development. Often, you'll need to fetch updates from a remote repository, but not necessarily all branches. This article will guide you through the process of pulling a specific branch, ensuring your local development environment stays clean and focused.
Understanding Git Pull and Fetch
Before diving into pulling a specific branch, it's crucial to understand the difference between git fetch
and git pull
.
git fetch
downloads commits, files, and refs from a remote repository into your local repository. It doesn't automatically merge or modify your local working directory. It simply updates your remote-tracking branches (e.g.,origin/main
,origin/feature-branch
).git pull
is essentially agit fetch
followed by agit merge
. It fetches changes from the remote repository and then attempts to merge them into your current local branch. This can sometimes lead to merge conflicts if not handled carefully.
flowchart TD A[Local Repository] --> B{git fetch} B --> C[Remote-tracking branches updated] C --> D{git merge} D --> E[Local branch updated] A --> F{git pull} F --> C F --> D
Git Fetch vs. Git Pull Workflow
Pulling a Specific Remote Branch into Your Current Local Branch
The most common scenario is pulling changes from a specific remote branch directly into the local branch you are currently working on. This is straightforward and uses the git pull
command with the remote name and the branch name.
git pull <remote-name> <branch-name>
Basic command to pull a specific branch
For example, if you want to pull the feature/new-login
branch from your origin
remote into your currently checked-out local branch, you would use:
git pull origin feature/new-login
Example: Pulling 'feature/new-login' from 'origin'
main
branch is tracking origin/main
), you can often just use git pull
without specifying the remote and branch names. Git will infer them.Pulling a Remote Branch into a New Local Branch
Sometimes, you might want to create a new local branch that is a direct copy of a remote branch. This is a common practice when starting work on a new feature or bug fix that already exists on the remote.
1. Step 1: Fetch all remote branches
First, ensure your local repository has the latest information about all remote branches. This doesn't merge anything, just updates your remote-tracking branches.
2. Step 2: Create and checkout a new local branch from the remote branch
Use the git checkout -b
command to create a new local branch and immediately switch to it. The -b
flag creates the branch, and specifying origin/<branch-name>
tells Git to base this new local branch on the remote branch.
# Step 1: Fetch all remote branches
git fetch origin
# Step 2: Create and checkout a new local branch from the remote branch
git checkout -b <new-local-branch-name> origin/<remote-branch-name>
Creating a new local branch from a remote branch
For example, to create a local branch named my-feature
based on the remote origin/feature/new-login
branch:
git fetch origin
git checkout -b my-feature origin/feature/new-login
Example: Creating 'my-feature' from 'origin/feature/new-login'
git fetch
before creating a new local branch from a remote one to ensure you're basing your new branch on the absolute latest version of the remote branch.Pulling a Remote Branch into an Existing Local Branch (Non-Tracking)
What if you have an existing local branch that is not tracking the remote branch you want to pull from? You can still pull changes, but you need to be explicit.
First, switch to the local branch you want to update:
git checkout <existing-local-branch>
Switch to your target local branch
Then, pull the specific remote branch into your current local branch:
git pull origin <remote-branch-name>
Pulling a remote branch into an existing local branch