【问题标题】:How to push changes from a forked project to the original project?如何将更改从分叉项目推送到原始项目?
【发布时间】:2011-12-18 18:24:44
【问题描述】:

我应该在 GitHub 上处理我客户的项目,更改将在他的存储库中。我尝试按照 fork 示例进行操作,但只能将更改转到我的帐户存储库?

在 GitHub 上的示例中,为了派生一个 repo,他们创建了一个名为 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

【问题讨论】:

  • 好吧,如果您没有对客户端存储库的写入权限,则无法将更改推送到它。

标签: github git-push


【解决方案1】:

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

  • 向您的客户发送pull request(更多信息请参见GitHub help item)。这允许您的客户在合并提案之前审查、讨论和/或请求对您的提案进行一些更改。
  • 您的客户要求将其作为committer 添加到他们的项目中。这将允许您直接将您的提交推送到他们的存储库,而无需您身边的分叉/克隆存储库。

附带说明,Spoon-Knife.git 是 GitHub 的只读存储库之一(用于演示目的),您将无法提交(除非您的客户 GitHub)。因此,您客户的 upstream git 远程应该指向不同的存储库

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

  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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多