Github:导入上游分支到fork

我有一个叉(origin)从一个项目(upstream)上的github。现在上游项目已经添加了一个新的分支,我想导入到我的分叉。我怎么做呢?

我试着签出远程并在其上创建一个分支,但这配置分支的方式是git push试图推入upstream:

git checkout upstream/branch
git checkout -b branch

编辑

也许这不是很清楚,但是我想把分支添加到我的本地存储库中,这样我就可以通过git push将它推到origin(我的分支)。因为上游存储库通常是只读的,您可以对其进行分叉。

因此,我基本上想签出origin上不存在的分支,其内容将从upstream中拉入。

84154 次浏览

--track吗?

git branch --track branch upstream/branch

我会用

git checkout -b <new_branch> upstream/<new_branch>
  1. 确保你已经将新的上游分支拉到你的当地的回购中:

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

      • git checkout -b newbranch upstream/newbranch
      • 李< / ul > < / >
      • 当你准备好将新分支推到起源时:

        • git push -u origin newbranch
        • 李< / ul > < / >

- u开关设置对指定远程的跟踪(在本例中为origin)

我也遇到了麻烦,谷歌把我带到了这里。然而,这些解决方案并没有奏效。我的问题是,当我添加我的上游,它设置我的git配置只获取主,而不是所有分支。 例:它看起来像这样

[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/*

以下步骤对我来说工作得很好(假设上游分支名称为branch):

$ git fetch upstream
$ git checkout branch
$ git push origin

我有一个稍微复杂一点的场景,我已经在我的fork(来自canonical repo)中定义了upstream,但需要从不同的fork签出一个分支。要做到这一点,过程略有不同。下面是我最终得到的配置:

[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> fork签出一个分支。

git fetch <other_user> <branch>
git checkout -b <branch> <other_user>/<branch>

这将为您提供一个本地分支,该分支派生自<other_user>叉。

为了推动本地分支,我必须明确我的push命令。

git push origin <branch>