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

Ted*_*tel 2 github git-push

我应该在 GitHub 上处理我客户的项目,更改将在他的存储库中。我试图遵循 fork 示例,但只能将更改转到我的帐户存储库?

在 GitHub 上的示例中,为了 fork 一个 repo,他们创建了一个远程调用upstream以指向原始项目。我可以从中获取更改

get fetch upstream
git merge upstream/master
Run Code Online (Sandbox Code Playgroud)

我能够通过以下方式将更改上传到我的回购中

git push –u  origin
Run Code Online (Sandbox Code Playgroud)

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

我试过

git push –u upstream
Run Code Online (Sandbox Code Playgroud)

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

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

nul*_*ken 5

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

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

附带说明一下,Spoon-Knife.git是 GitHub 的只读存储库之一(用于演示目的),您将无法提交(除非您的客户GitHub)。因此,您客户的upstreamgit 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

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