Github:将上游分支导入fork

问题描述 投票:0回答:7

我有一个来自 github 上的项目 (

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

我尝试检查遥控器并在其上创建一个分支,但这会以

git push
尝试推送到
upstream
的方式配置分支:

git checkout upstream/branch
git checkout -b branch

编辑

也许这还不清楚,但我想将分支添加到我的本地存储库,这样我就可以通过

origin
将其推送到
git push
(我的分叉)。因为上游存储库通常是只读的,您需要分叉它才能做出贡献。

所以我基本上想在

origin
上签出一个不存在的分支,其内容将从
upstream
拉入。

git github
7个回答
369
投票
  1. 确保您已将新的 upstream 分支拉入您的 本地存储库

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

    newbranch
    ):

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

    • git push -u origin newbranch

-u 开关设置对指定遥控器的跟踪(在本例中为

origin


33
投票

在分支的“代码”选项卡中,单击分支图标并转到“查看所有分支”,然后单击“新建分支”。在那里您可以选择源 - 从您的分叉或上游。选择上游并选择要“导入”的分支。 最后,创建同名分支。


11
投票

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

[remote "somebody"]
        url = [email protected]:somebodys/repo.git
        fetch = +refs/heads/master:refs/remotes/upstream/master

按如下方式编辑 .git/config 解决了我的问题

[remote "somebody"]
        url = [email protected]:somebodys/repo.git
        fetch = +refs/heads/*:refs/remotes/upstream/*

9
投票

我会用

git checkout -b <new_branch> upstream/<new_branch>

3
投票

我有一个稍微复杂的场景,我已经在我的分叉中定义了一个

upstream
(来自规范仓库),但需要从另一个分叉中签出一个分支。要完成此任务,过程略有不同。这是我最终得到的配置:

[remote "origin"]
url = [email protected]:<your_user/org>/<repo>.git
fetch = +refs/heads/*:refs/remotes/origin/*

[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true

[remote "upstream"]
url = [email protected]:<upstream_user>/<repo>.git
fetch = +refs/heads/*:refs/remotes/upstream/*

[remote "other_user"]
url = [email protected]:<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>

这将为您提供一个源自 叉子的本地分支。

要推送本地分支,我必须使用具体的推送命令。

git push origin <branch>

2
投票

以下步骤对我来说效果很好(假设上游分支名称是

branch
):

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

0
投票

--track

git branch --track branch upstream/branch
© www.soinside.com 2019 - 2024. All rights reserved.