0

似乎很容易,我想...

  • 我分叉了一个名为的 repoabc并将其克隆到本地。
  • 我派生出来的原始仓库有一个名为2.1-stable
  • 我的仓库或本地没有这个分支
  • 我需要在这个分支上提交,并对我分叉的原始仓库做 PR

这是我尝试过的:

// clone into a separate folder
git clone git:github.com/some/abc.git -b 2.1-stable ../ext
// set to my repo
git remote set-url origin git://github.com/me/abc.git

当我现在通过在某处添加空格并尝试提交来编辑文件时,我被告知:

local branch is ahead of remote by 1 commit

我试图获取/拉取,但这会产生大量的合并冲突(因为我只是“隔开”,很可能不是因为我的行为),但无论如何......我被卡住了。

第二次尝试是在我的仓库中添加分支:

git branch -a

这表明我正在寻找的分支位于remotes/upstream/2.1-stable. 我试图补充一点:

git checkout -b 2.1-stable remotes/upstream/2.1-stable

但这已经感觉不对了,甚至试图做出这样的承诺

git push -u https://github.com/me/abc/2.1-stable.git 2.1-stable:2.1-stable

验证失败。

我可能在上面做错了100件事......

问题
有人可以告诉我如何正确执行此操作吗?

谢谢!

4

1 回答 1

4

remote set-url更改您的存储库的 url,这并不是您真正想要的,因为两个存储库都将参与设置。

git 中的分支与存储库克隆 url 无关,这就是您上次尝试验证失败的原因。


git 的部分神奇之处在于您可以在存储库中配置多个远程。所以你可以用 签出你自己的git clone https://github/me/abc,然后你可以用git remote add upstream https://github/some/abcupstream(类似于origin)是这个特定角色的常规名称)添加另一个遥控器。如果您git remote现在运行,您会看到两个推/拉 url 对而不是一个。

你还没有得到任何数据upstream来做那个运行git fetch upstream。现在数据在您的存储库中本地,您可以通过签出本地分支来处理它git checkout -b 2.1-stable remotes/upstream/2.1-stable(这是来自您的帖子,您在那里非常接近)。因为您没有upstreamorigin. git push origin 2.1-stable现在更改的代码在 github 上,您可以upstream通过 github 表单向该特定分支发送拉取请求到 repo。

PS:请注意,您可以随意命名本地分支和远程分支origin。这有助于明确这不是2.1-stable来自 的确切分支upstream,而可能是some-new-feature恰好基于 的具有许多提交的分支2.1-stable。始终可以在提交历史记录中检查分支的工作方式,但命名可以使其他浏览您的存储库的人更容易找出哪些代码是您存储库中不同分支的一部分。

于 2013-04-04T08:10:03.207 回答