Github:将上游分支导入fork

时间:2010-12-10 14:59:26

标签: git github

我在github上有一个项目(origin)的fork(upstream)。现在上游项目添加了一个新分支,我想导入我的fork。我该怎么做?

我尝试检查远程并在其上创建分支,但是按照git push尝试推送到upstream的方式配置分支:

git checkout upstream/branch
git checkout -b branch

修改

也许这不清楚,但我想将分支添加到我的本地存储库,因此我可以通过origin将其推送到git push(我的分支)。因为上游存储库通常是只读的,所以你将其分配给贡献。

所以我基本上想要查看origin上不存在的分支,其内容将从upstream中提取。

6 个答案:

答案 0 :(得分:226)

  1. 确保您已将新的上游分支拉入本地回购

    • 首先,确保您的工作树干净(提交/存储/恢复任何更改)
    • 然后,git fetch upstream检索新的上游分支
  2. 创建并切换到本地版本的新上游分支 newbranch ):

    • git checkout -b newbranch upstream/newbranch
  3. 当您准备将新分支推送到原点时:

    • git push -u origin newbranch
  4. -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>