1

我已经阅读了精美的手册,并在这里阅读了很多问题,但我仍然不确定如何正确处理通过拉取请求提交补丁。

我正在使用适用于 Windows 的 GitHub(但如果需要,我可以使用命令行)。

这就是我正在做的事情,以及我感到困惑的地方:

  1. 将原始 GitHub 项目分叉以创建我自己的项目。
  2. 进行了更改A,我希望原始项目包括在内。
  3. 发送了A的拉取请求,他们接受了,所以它现在是原始项目的一部分。
  4. 进行了更改B,这对他们没有用,所以我不希望他们将其包含在他们的版本中。
  5. 进行了更改C,我确实希望他们使用。
  6. 更多的提交,其中一些对他们有价值,而另一些则没有。

分叉/分支/拉请求/合并的正确顺序是什么:

  1. 确保我有一个包含所有更改的版本。
  2. 确保我可以与上游项目共享某些更改。
  3. 一旦我在我的 master 分支中进行了更改B,任何新的分支都会包含它,那么我如何只发送C的相关更改?或者我是否需要根据上游副本中仍然存在的内容以某种方式创建一个新分支?

我主要只是想确保我不会导致上游开发人员额外的工作不得不返回并挑选某些更改。我越容易让他们修复错误越好,那么每个人都很高兴!

4

2 回答 2

1

分叉项目的通常工作流程是基于上游分支(通常是)创建自己的分支(或多个分支upstream/master),并在其中完成所有工作。每个分支通常封装一个特性。你会发送你想要贡献的功能的拉取请求。

因此,对于您的示例:

进行了更改A,我希望原始项目包括在内。

您通常希望为更改A创建一个功能或错误修复分支,并将其作为拉取请求提交到 GitHub,如下所示:

# Make a branch based off of upstream/master
git checkout -b branch-A upstream/master

# Make some changes, then commit them
git add .
git commit

# Push the branch to your fork, then go to GitHub and submit the pull-request
git push origin head

进行了更改B,这对他们没有用,所以我不希望他们将其包含在他们的版本中。

如果您不希望项目所有者进行此更改,请将其隔离到自己的分支中,并且不要为它发出拉取请求。请注意,如果您愿意,您仍然可以将分支备份到您自己的远程分支:

# Make a branch based off of upstream/master
git checkout -b branch-B upstream/master

# Make some changes, then commit them
git add .
git commit

# Push the branch to your fork
git push origin head

进行了更改C,我确实希望他们使用。

为C创建另一个分支,就像为A所做的那样:

# Make a branch based off of upstream/master
git checkout -b branch-C upstream/master

# Make some changes, then commit them
git add .
git commit

# Push the branch to your fork, then go to GitHub and submit the pull-request
git push origin head
于 2013-09-02T01:21:56.313 回答
0

更新比赛 2015:

请参阅“在 GitHub for Windows 中创建拉取请求

就像我们的Mac 客户端一样,您现在可以使用GitHub for Windows直接从您的桌面向 GitHub 或 GitHub Enterprise 提交拉取请求。

我们也没有忘记叉子!如果您 fork 一个存储库,然后想为上游存储库贡献更改,GitHub for Windows 将跟踪上游分支。这意味着当您准备好回馈您的更改时,麻烦会更少。


(2013 年 8 月)请注意,使用 GitHub 客户端(适用于 Windows的 GitHub或适用于 Mac的 GitHub ),很容易:

https://f.cloud.github.com/assets/432536/943708/46a2f12e-0251-11e3-8c46-b1b6636f23d5.png

https://f.cloud.github.com/assets/432536/1160834/a3bbd0be-1fdf-11e3-90aa-13ee15c6c2d8.png

单击它将:

  • 打开 GitHub for Mac 或 GitHub for Windows,
  • 克隆存储库(如果你没有它),
  • 自动切换到包含更改的分支,并且
  • 最后在其默认应用程序中打开文件进行编辑。

所以如果你不喜欢命令行......你还有另一个选择。

于 2013-09-30T19:53:25.530 回答