如何将更改从分叉项目推送到原始项目?

时间:2011-12-18 18:24:44

标签: github git-push

我应该在GitHub上运行我的客户端项目,其中的更改将在他的存储库中。我试图按照fork示例,但只能将更改转到我的帐户存储库?

在GitHub的示例中,为了分叉一个仓库,他们创建一个名为upstream的远程指向原始项目。

我可以从中获得更改
get fetch upstream
git merge upstream/master

我能够通过

将更改上传到我的回购中
git push –u  origin

将我的更改复制到我的帐户。

我试过

git push –u upstream

在原始帐户上推送我的更改。我收到以下错误

  

你不能推送到git://github.com.octocat/SpoonKnife.git   使用git@github.comoctocat/Spoon0-Knife.git

2 个答案:

答案 0 :(得分:3)

基本上,为了与您的客户合作,您有两个主要选择:

  • 向您的客户发送pull request(有关详情,请参阅 GitHub help item )。这允许您的客户在合并之前审核,讨论和/或请求对您的提案进行一些更改。
  • 将您客户的请求作为committer添加到他们的项目中。这将允许您直接将提交推送到其存储库,而无需您的fork /克隆存储库。

作为旁注,Spoon-Knife.git是GitHub的只读存储库之一(用于演示目的),您将无法承诺(除非您的客户 GitHub )。因此,您的客户端的upstream git remote应指向不同的存储库

以下是步骤(将存储库分叉并克隆到本地磁盘后要遵循的步骤):

  1. 删除上游参考:git remote rm upstream
  2. 添加客户的信息 - git remote add upstream git@xxxxxx
  3. 推送您的更改 - git push -u upstream mastergit push -u将设置远程存储库的HEAD。
  4. 如果您想拉 - git pull upstream master
  5. ,则相同

    如果您更喜欢名称origin替换上游的origin,但仍然按照步骤1删除对Spoon-Knife.git的引用。然后在第2步 - git remote add origin git@xxxx

答案 1 :(得分:0)

git://github.com.octocat/SpoonKnife.git是一个只读URL。正如GitHub建议的那样,相应的可写URL是git@github.comoctocat/Spoon0-Knife.git。 如果您希望能够推送上游存储库,则必须要求(向上游团队,即您的客户)添加为提交者。