Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get new upstream branch with git

Tags:

git

git-branch

I've forked a repo and all of my work goes into that fork (my origin) and I merge branches upstream with pull requests. Pretty standard.

But now there's a new branch in the upstream repo and I can't quite figure out how to get that new branch locally and then push it to my origin. Here is my situation.

$ git remote show origin
* remote origin
  Fetch URL: [email protected]:rackspace/jclouds.git
  Push  URL: [email protected]:rackspace/jclouds.git
  HEAD branch: master
  Remote branches:
    1.5.x                   tracked
    master                  tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

$ git remote show upstream
* remote upstream
  Fetch URL: https://github.com/jclouds/jclouds
  Push  URL: https://github.com/jclouds/jclouds
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (up to date)

I know that there is a 1.6.x branch in jclouds/jclouds and I want to get that branch locally and then push it to rackspace/jclouds. I've tried this command

$ git fetch upstream 1.6.x
From https://github.com/jclouds/jclouds
 * branch            1.6.x      -> FETCH_HEAD

And it looks like it's fetched the branch but I don't see it in git remote show or git branch -a so I'm unable to setup a local tracking branch.

What am I missing?

like image 881
Everett Toews Avatar asked Mar 31 '13 14:03

Everett Toews


People also ask

How do I pull a new branch in git?

just need to run git fetch , which will retrieve all branches and updates, and after that, run git checkout <branch> which will create a local copy of the branch because all branches are already loaded in your system.

How do I change my upstream branch?

Set upstream branch using the git push command with the -u extension or use the longer version --set-upstream . Replace <branch name> with your branch name. The test branch now has a set upstream branch.


1 Answers

This should be enough

# I prefer fetching everything from upstream
git fetch upstream

# Then I track the new remote branch with a local branch
git checkout -b 1.6.x --track upstream/1.6.x
git push origin 1.6.x

If there are update issues like:

fatal: Cannot update paths and switch to branch '1.6.x' at the same time. 
Did you intend to checkout 'upstream/1.6.x' which can not be resolved as commit?"

And if this doesn't work either:

git checkout upstream/1.6.x -b 1.6.x

Then a simpler version is:

# let's create a new local branch first
git checkout -b 1.6.x
# then reset its starting point
git reset --hard upstream/1.6.x

What the OP Everett Toews has to do in his case was:

Ultimately I had to explicitly add the upstream branch with

git remote add --track 1.6.x upstream-1.6.x https://github.com/jclouds/jclouds 

and then:

git pull upstream-1.6.x 1.6.x
like image 53
VonC Avatar answered Oct 01 '22 13:10

VonC