我有一个来自 github 上的项目 (
origin
) 的分支 (upstream
)。现在上游项目添加了一个新分支,我想导入到我的fork中。我该怎么做?
我尝试检查遥控器并在其上创建一个分支,但这会以
git push
尝试推送到upstream
的方式配置分支:
git checkout upstream/branch
git checkout -b branch
也许这还不清楚,但我想将分支添加到我的本地存储库,这样我就可以通过
origin
将其推送到git push
(我的分叉)。因为上游存储库通常是只读的,您需要分叉它才能做出贡献。
所以我基本上想在
origin
上签出一个不存在的分支,其内容将从 upstream
拉入。
确保您已将新的 upstream 分支拉入您的 本地存储库:
git fetch upstream
检索新的上游分支创建并切换到新上游分支的本地版本(
newbranch
):
git checkout -b newbranch upstream/newbranch
当您准备好将新分支推送到origin时:
git push -u origin newbranch
-u 开关设置对指定遥控器的跟踪(在本例中为
origin
)
在分支的“代码”选项卡中,单击分支图标并转到“查看所有分支”,然后单击“新建分支”。在那里您可以选择源 - 从您的分叉或上游。选择上游并选择要“导入”的分支。 最后,创建同名分支。
我也遇到了这个问题,谷歌把我带到了这里。 然而,这些解决方案并没有奏效。 我的问题是,当我添加上游时,它将我的 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/*
我会用
git checkout -b <new_branch> upstream/<new_branch>
我有一个稍微复杂的场景,我已经在我的分叉中定义了一个
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>
以下步骤对我来说效果很好(假设上游分支名称是
branch
):
$ git fetch upstream
$ git checkout branch
$ git push origin
--track
?
git branch --track branch upstream/branch