Github:将上游分支导入fork

neskvpey  于 2023-01-11  发布在  Git
关注(0)|答案(7)|浏览(162)

我有一个来自github上一个项目(upstream)的fork(origin),现在上游项目添加了一个新的分支,我想导入到我的fork中,我该怎么做?
我试着 checkout 遥控器并在其上创建一个分支,但这会像git push试图推送到upstream那样配置分支:

git checkout upstream/branch
git checkout -b branch

编辑

也许这不是很清楚,但是我想把分支添加到我的本地仓库,这样我就可以通过git push把它推到origin(我的fork),因为上游仓库通常是只读的,你可以fork它来贡献。
因此,我基本上想 checkout origin上不存在的分支,其内容将从upstream拉入。

41zrol4v

41zrol4v1#

我有一个稍微复杂一些的场景,我已经在我的fork中定义了一个upstream(来自规范repo),但是需要从另一个fork checkout 一个分支。为了完成这个任务,过程稍微有些不同。下面是我最后得到的配置:

[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 checkout 一个分支。

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

这会给予你一个从fork派生出来的本地分支<other_user>。
要推送本地分支,我必须使用特定的推送命令。

git push origin <branch>
wsxa1bj1

wsxa1bj12#

一个月一个月

git branch --track branch upstream/branch
vnjpjtjt

vnjpjtjt3#

从用户界面:
在您的分支中,转到“分支”,单击“新建分支”。在那里您将选择源-您的分支或上游。选择上游,然后选择要“导入”的分支。创建同名分支。完成。

tgabmvqs

tgabmvqs4#

  • 确保已将新的上游分支拉入本地回购
  • 首先,确保您的工作树是干净的(提交/隐藏/恢复任何更改)
  • 然后,git fetch upstream检索新的上游分支
  • 创建并切换到新上游分支的本地版本newbranch):
  • git checkout -b newbranch upstream/newbranch
  • 当您准备好将新分支推送到origin时:
  • git push -u origin newbranch
    -u开关用于设置对指定远程设备的跟踪(在本例中为**origin**)
tkqqtvp1

tkqqtvp15#

我会用

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

kmpatx3s6#

我在这方面也遇到了麻烦,google把我带到了这里。然而解决方案并不起作用。我的问题是,当我添加我的上游时,它设置我的git config只获取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/*
vnzz0bqm

vnzz0bqm7#

下面的步骤对我来说非常有效(假设上游分支名称为branch):

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

相关问题