352

I have cloned a git repository to my dev server and then switched to the dev branch but now I can't do a git pull to update the branch.

How do I update the code on the server ?

1
  • 1
    A beginner's remark: I tried to find a question about whether I can use git pull my_branch for git fetch my_branch + git checkout my_branch and it turns out that this throws fatal: my_branch does not appear to be a git repository \n fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. You can only use pull if you want to merge another branch into the already checked out branch or if you want to update an already checked out branch. Commented Jul 20, 2022 at 12:15

10 Answers 10

460

See the git-pull man page:

git pull [options] [<repository> [<refspec>...]]

and in the examples section:

Merge into the current branch the remote branch next:

$ git pull origin next

So I imagine you want to do something like:

git pull origin dev

To set it up so that it does this by default while you're on the dev branch:

git branch --set-upstream-to=origin/dev dev
3
  • 11
    "--set-upstream flag is deprecated and will be removed. Consider using --track or --set-upstream-to Branch dev set up to track remote branch dev from origin." Eg. git branch --set-upstream-to origin/dev Commented Jul 3, 2015 at 5:19
  • Edit this to reflect deprecation of --set-upstream? Commented Dec 6, 2018 at 17:52
  • Personally I am interested in the flow when I want to pull one specific branch from origin that hasn't been fetched yet and put those object on separate branch, so my current branch is not merged with what I'm pulling.
    – yozniak
    Commented Nov 1, 2019 at 20:37
67

if you want to pull from a specific branch all you have to do is

git pull 'remote_name' 'branch_name'

NOTE: Make sure you commit your code first.

2
  • Less commands to type than in most viewed answer, so please upvote this answer. Commented Nov 21, 2021 at 8:37
  • Nice! This is what I was looking for. Thanks!
    – Janbalik
    Commented Mar 5, 2022 at 13:21
63

Here is what you need to do. First make sure you are in branch that you don't want to pull. For example if you have master and develop branch, and you are trying to pull develop branch then stay in master branch.

git checkout master

Then,

git pull origin develop
5
  • 22
    This is confusing. If I want to pull a remote "dev" branch into a local "dev" branch, I would think that you need to stay in the local "dev" branch and not any other branch.
    – Roman
    Commented Nov 5, 2017 at 12:37
  • 10
    Doesn't this fetch the remote develop branch, and then merge it with your local master?
    – Brad P.
    Commented Apr 25, 2018 at 15:56
  • 5
    I did git checkout develop and git pull origin develop and worked well. You would need to checkout other branch if you want to remove a local or remote branch (git branch -d develop or git push origin --delete develop)
    – ChesuCR
    Commented Jan 3, 2019 at 16:46
  • 2
    very confusing. I just merged the branch I wanted to test into master locally :) Commented Nov 22, 2019 at 7:17
  • 1
    As @roman says, one needs to be in the local branch.
    – woter324
    Commented Jun 18, 2020 at 21:58
19

It's often clearer to separate the two actions git pull does. The first thing it does is update the local tracking branc that corresponds to the remote branch. This can be done with git fetch. The second is that it then merges in changes, which can of course be done with git merge, though other options such as git rebase are occasionally useful.

17

Here are the steps to pull a specific or any branch,

1.clone the master(you need to provide username and password)

       git clone <url>

2. the above command will clone the repository and you will be master branch now

       git checkout <branch which is present in the remote repository(origin)>

3. The above command will checkout to the branch you want to pull and will be set to automatically track that branch

4.If for some reason it does not work like that, after checking out to that branch in your local system, just run the below command

       git pull origin <branch>
15

Laravel documentation example:

git pull https://github.com/laravel/docs.git 5.8

based on the command format:

git pull origin <branch>

👍

10

This worked perfectly for me, although fetching all branches could be a bit too much:

git init
git remote add origin https://github.com/Vitosh/VBA_personal.git
git fetch --all
git checkout develop

enter image description here


If you want to avoid the overkill of pulling everything and only getting the explicit branch (in this case 'develop'), then the following works:

git init
git remote add origin https://github.com/Vitosh/VBA_personal.git
git fetch origin develop
git checkout develop
2
  • 2
    why fetch --all? git fetch origin <name_of_specific_branch> will be just fine
    – ashishsony
    Commented Mar 1, 2021 at 14:41
  • @ashishsony - well, it was easier for me to do it that way. Anyway, you definitely have a point, edited my answer.
    – Vityata
    Commented Oct 21, 2021 at 11:28
6

You can take update / pull on git branch you can use below command

git pull origin <branch-name>

The above command will take an update/pull from giving branch name

If you want to take pull from another branch, you need to go to that branch.

git checkout master

Than

git pull origin development

Hope that will work for you

2

git-pull - Fetch from and integrate with another repository or a local branch

git pull [options] [<repository> [<refspec>...]]

You can refer official git doc https://git-scm.com/docs/git-pull

Ex :

git pull origin dev

2
  • How is your answer any different from any of the others already posted?
    – j08691
    Commented Dec 16, 2019 at 16:29
  • Yeah, nothing much only thing is official docs ( git-scm.com/docs/git-pull ) so you can explore options lot.
    – Sesha
    Commented Dec 17, 2019 at 15:55
0

in my case, Devop was updated(or HEAD) and Main was older(like 20 commits back), using git fetch --all and --allow-unrelated-histories, works perfectly

like this:

git clone https://github.com/xxxxxxxx
git remote add origin https://github.com/xxxxxxxx
git fetch --all

(here,i got a merge unrelated histories error,so)

git pull origin devop --allow-unrelated-histories

(at this point i got some conflicts that solved with a new commit)

and finally

git push -u origin devop

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.