如果你想为其他人的项目做出贡献,但没有对存储库的写访问权限,你可以使用“分叉和 Pull 请求”工作流。
分叉是一个新存储库,它与原始“上游”存储库共享代码和可见性设置。分叉通常用于在将想法或更改提回上游存储库之前对其进行迭代,例如在开源项目中或当用户没有对上游存储库的写访问权限时。
你可以通过从你的分叉向“上游”存储库提交 Pull 请求来做出贡献。有关更多信息,请参阅“分叉存储库”。
本教程使用 Spoon-Knife 项目,这是一个托管在 GitHub.com 上的测试存储库,它允许你测试分叉和 Pull 请求工作流。
-
导航到 https://github.com/octocat/Spoon-Knife 上的 Spoon-Knife
项目。
-
在页面的右上角,单击分叉。
-
在“所有者”下,选择下拉菜单并单击分叉存储库的所有者。
注意
如果你的用户名显示为灰色,则是因为分叉已存在。相反,你应该更新现有的分叉。有关更多信息,请参阅“同步分叉”。
-
默认情况下,分叉的名称与其上游存储库的名称相同。或者,为了进一步区分你的分叉,在“存储库名称”字段中,键入一个名称。
-
或者,在“描述”字段中,键入你的分叉的描述。
-
选择仅复制默认分支(可选)。
对于许多分支场景(例如为开源项目做出贡献),您只需要复制默认分支。如果您不选择此选项,所有分支都将被复制到新分支中。
-
单击创建分支。
您已成功分叉 Spoon-Knife 存储库,但到目前为止,它仅存在于 GitHub 上。为了能够处理项目,您需要将其克隆到您的计算机。
您可以使用命令行、GitHub CLI 或 GitHub Desktop 克隆您的分支。
在对项目进行更改之前,您应该创建一个新分支并检出该分支。通过将更改保留在自己的分支中,您可以遵循 GitHub Flow,并确保将来更容易再次为同一项目做出贡献。有关更多信息,请参阅“GitHub flow”。
使用您喜欢的文本编辑器(例如 Visual Studio Code)对项目进行一些更改。例如,您可以更改 index.html
中的文本以添加您的 GitHub 用户名。
当您准备好提交更改时,请暂存并提交您的更改。git add .
告诉 Git 您希望在下一次提交中包含您的所有更改。git commit
对这些更改进行快照。
当您暂存并提交文件时,您实际上是在告诉 Git,“好的,对我的更改进行快照!”您可以继续进行更多更改,并进行更多提交快照。
现在,您的更改仅在本地存在。当您准备好将更改推送到 GitHub 时,请将更改推送到远程。
最后,您已准备好将更改提议到主项目中!这是制作他人项目的 fork 的最后一步,而且可以说是最重要的一步。如果您做出了您认为对整个社区有益的更改,您绝对应该考虑回馈。
要执行此操作,请前往您的项目所在的 GitHub 上的存储库。对于此示例,它将位于 https://github.com/<your_username>/Spoon-Knife
。您将看到一个横幅,指示您的分支比 octocat:main
领先一次提交。单击 **贡献**,然后单击 **打开拉取请求**。
GitHub 会将您带到一个页面,该页面显示您的 fork 与 octocat/Spoon-Knife
存储库之间的差异。单击 **创建拉取请求**。
GitHub 会将您带到一个页面,您可以在其中输入标题和更改说明。重要的是提供尽可能多的有用信息,并说明您最初提出此拉取请求的原因。项目所有者需要能够确定您的更改是否对每个人都像您认为的那样有用。最后,单击 **创建拉取请求**。
拉取请求是讨论的区域。如果项目所有者拒绝您的拉取请求,或要求提供有关为何提出此请求的更多信息,请不要感到冒犯。即使项目所有者选择不合并您的拉取请求,您的更改仍存在于您的 fork 中。其他人可能会发现您的 fork 比原始项目更有价值。
您已成功 fork 并回馈到存储库。继续前进,贡献更多!有关更多信息,请参见“在 GitHub 上查找为开源做出贡献的方法”。