2013-04-04 54 views
0

似乎相当容易我以为,如何在Github的分支上进行提交和拉取请求?

  • 我分叉了一个名为abc回购和克隆的本地。
  • 原来的回购我从分叉有一个名为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

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(这是来自您的帖子,您离得很近)来处理它。由于您没有对upstream的提交访问权限,相反,在完成编辑/提交后,您可以将新本地分支推送到与git push origin 2.1-stable。现在更改后的代码位于github上,并且您已准备好通过github表单向该特定分支发送一个请求到upstream repo。

PS:请注意,您可以任意指定您的本地分支和远程分支origin。这很有用,可以清楚地表明这不是从upstream确切的2.1-stable分支,但可能是some-new-feature分支有很多提交,它们恰好基于2.1-stable。分支的工作方式总是可以在提交历史记录中进行检查,但命名可以让其他浏览您的仓库的人更容易找出哪些代码是仓库中不同分支的一部分。

+0

谢谢!这应该让我走! – frequent 2013-04-04 08:31:31

相关问题