我在github上有一个项目(origin
)的fork(upstream
)。现在上游项目添加了一个新分支,我想导入我的fork。我该怎么做?
我尝试检查远程并在其上创建分支,但是按照git push
尝试推送到upstream
的方式配置分支:
git checkout upstream/branch
git checkout -b branch
也许这不清楚,但我想将分支添加到我的本地存储库,因此我可以通过origin
将其推送到git push
(我的分支)。因为上游存储库通常是只读的,所以你将其分配给贡献。
所以我基本上想要查看origin
上不存在的分支,其内容将从upstream
中提取。
答案 0 :(得分:226)
确保您已将新的上游分支拉入本地回购:
git fetch upstream
检索新的上游分支创建并切换到本地版本的新上游分支( newbranch
):
git checkout -b newbranch upstream/newbranch
当您准备将新分支推送到原点时:
git push -u origin newbranch
-u 开关设置跟踪到指定的遥控器(在此示例中, origin
)
答案 1 :(得分:6)
我会用
git checkout -b <new_branch> upstream/<new_branch>
答案 2 :(得分:3)
我也遇到了麻烦,谷歌把我带到了这里。然而,解决方案不起作用。我的问题是当我添加我的上游时,它将我的git配置设置为仅获取master,而不是所有分支。 例如它看起来像这样
[remote "somebody"]
url = git@github.com:somebodys/repo.git
fetch = +refs/heads/master:refs/remotes/upstream/master
按如下方式编辑.git / config修复了我的问题
[remote "somebody"]
url = git@github.com:somebodys/repo.git
fetch = +refs/heads/*:refs/remotes/upstream/*
答案 3 :(得分:0)
--track
?
git branch --track branch upstream/branch
答案 4 :(得分:0)
以下步骤对我来说效果很好(假设上游分支名称为branch
):
$ git fetch upstream
$ git checkout branch
$ git push origin
答案 5 :(得分:0)
我有一个稍微复杂的场景,在我的派生中已经有一个upstream
定义(来自规范仓库),但是需要从另一个派生中签出一个分支。为完成此任务,过程略有不同。这是我最终得到的配置:
[remote "origin"]
url = git@github.com:<your_user/org>/<repo>.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
[remote "upstream"]
url = git@github.com:<upstream_user>/<repo>.git
fetch = +refs/heads/*:refs/remotes/upstream/*
[remote "other_user"]
url = git@github.com:<other_user>/<repo>.git
fetch = +refs/heads/*:refs/remotes/<other_user>/*
现在您也可以从<other_user>
分支中签出一个分支。
git fetch <other_user> <branch>
git checkout -b <branch> <other_user>/<branch>
这将为您提供一个派生自分支的本地分支。
要推送该本地分支,我必须使用我的push命令。
git push origin <branch>