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?
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.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With