我已经分叉了一个仓库,我的所有工作都进入了那个分支(我的起源),并且我将上游的分支与pull请求合并.很标准.
但是现在上游回购中有一个新分支,我无法弄清楚如何在本地获取新分支,然后将其推送到我的原点.这是我的情况.
$ git remote show origin
* remote origin
Fetch URL: git@github.com:rackspace/jclouds.git
Push URL: git@github.com: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)
Run Code Online (Sandbox Code Playgroud)
我知道jclouds/jclouds中有一个1.6.x分支,我想在本地获取该分支,然后将其推送到rackspace/jclouds.我试过这个命令
$ git fetch upstream 1.6.x
From https://github.com/jclouds/jclouds
* branch 1.6.x -> FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
看起来它已经取得了分支,但我没有看到它git remote show
或者git branch -a
因此我无法设置本地跟踪分支.
我错过了什么?
Von*_*onC 21
这应该足够了
# 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
Run Code Online (Sandbox Code Playgroud)
如果有更新问题,例如:
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?"
Run Code Online (Sandbox Code Playgroud)
如果这不起作用:
git checkout upstream/1.6.x -b 1.6.x
Run Code Online (Sandbox Code Playgroud)
那么更简单的版本是:
# 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
Run Code Online (Sandbox Code Playgroud)
什么OP埃弗雷特托斯在他的情况下,做的是:
最终我必须明确添加上游分支
git remote add --track 1.6.x upstream-1.6.x https://github.com/jclouds/jclouds
Run Code Online (Sandbox Code Playgroud)
然后:
git pull upstream-1.6.x 1.6.x
Run Code Online (Sandbox Code Playgroud)