关于复刻
如果你想为别人的项目做贡献,但没有直接修改权限,你可以创建该项目的副本,进行更新,然后建议将这些更新合并到主项目中。 这个过程通常被称为“分支和拉取请求”工作流。
创建自己的项目副本(或“分支”)时,就像是创建一个与原始项目共享代码的新工作空间。 这对于开源项目或任何你没有写入权限的原始项目都非常有用。
在你在副本中完成更改后,可以将它们提交为拉取请求,这是向主项目提出更改建议的一种方式。 有关详细信息,请参阅“为存储库创建分支”。
创建项目的副本
本教程使用 Spoon-Knife 项目,这是一个托管在 GitHub 上的测试存储库,可让你测试分支和拉取请求工作流。
-
导航到位于 https://github.com/octocat/Spoon-Knife 的
Spoon-Knife
项目。 -
在页面右上角,单击“分支”。
-
在“所有者”下,选择下拉菜单,然后单击分支存储库的所有者。
Note
如果用户名灰显,是因为该分支已存在。 这时应改为更新现有的分支。 有关详细信息,请参阅“同步复刻”。
-
默认情况下,分支的名称与其上游存储库的名称相同。 (可选)若要进一步区分分支,请在“存储库名称”字段中键入名称。
-
(可选)在“描述”字段中键入分支的描述。
-
(可选)选择“仅复制默认分支”。
对于许多分支场景(例如参与开源项目),你只需复制默认分支。 如果未选择此选项,所有分支都将复制到新分支中。
-
单击“创建分支”。
Note
如果要从上游存储库复制其他分支,可从“分支”页执行此操作****。 有关详细信息,请参阅“创建和删除仓库中的分支”。
将分支克隆到计算机
您已经成功复刻了 Spoon-Knife 存储库,但到目前为止,它仅存在于 GitHub Enterprise Server 上。 为了能够处理该项目,您需要将其克隆到您的计算机。
您可以使用命令行、GitHub CLI 或 GitHub Desktop 克隆复刻。
-
在 GitHub Enterprise Server 上,导航到 Spoon-Knife 存储库的分支。
-
在文件列表上方,单击 “代码”。
-
复制存储库的 URL。
-
要使用 HTTPS 克隆存储库,请在“HTTPS”下单击 。
-
要使用 SSH 密钥克隆存储库,包括组织的 SSH 证书颁发机构颁发的证书,请单击“SSH”,然后单击 。
-
要使用 GitHub CLI 克隆存储库,请单击“GitHub CLI”,然后单击 。
-
-
打开终端终端Git Bash。
-
将当前的工作目录更改为您想要存储克隆目录的位置。
-
键入
git clone
,然后粘贴之前复制的 URL。 它将如下所示,使用你的 GitHub Enterprise Server 用户名替换YOUR-USERNAME
:git clone https://HOSTNAME/YOUR-USERNAME/Spoon-Knife
-
按 Enter。 将创建您的本地克隆。
$ git clone https://HOSTNAME/YOUR-USERNAME/Spoon-Knife > Cloning into `Spoon-Knife`... > remote: Counting objects: 10, done. > remote: Compressing objects: 100% (8/8), done. > remove: Total 10 (delta 1), reused 10 (delta 1) > Unpacking objects: 100% (10/10), done.
Note
若要详细了解 GitHub CLI,请参阅“关于 GitHub CLI”。
若要创建分支的克隆,请使用 --clone
标记。
gh repo fork REPOSITORY --clone=true
-
在“文件”菜单中,单击“克隆存储库” 。
-
单击与要克隆的仓库位置对应的选项卡。 也可以单击 URL 手动输入存储库位置。
-
在存储库列表中,单击要克隆的存储库。
-
若要选择要将存储库克隆到其中的本地目录,请单击“本地路径”字段旁的“选择...”,然后导航到该目录。
-
在“克隆存储库”窗口的底部,单击“克隆”。
创建分支以处理
在对项目进行更改之前,应创建新的分支并将其签出。通过将更改保留在在自己的分支中,可以遵循 GitHub 流,并确保它将来再次为同一项目做出贡献会更容易。 请参阅“GitHub 流”。
git branch BRANCH-NAME
git checkout BRANCH-NAME
git branch BRANCH-NAME
git checkout BRANCH-NAME
有关如何在 GitHub Desktop 中创建和管理分支的详细信息,请参阅“在 GitHub Desktop 中管理分支”。
创建和推送更改
继续操作,使用你喜欢的文本编辑器(例如 Visual Studio Code)对项目进行一些更改。 例如,可以更改 index.html
中的文本以添加你的 GitHub 用户名。
当您准备好提交更改时,请暂存并提交更改。 git add .
告诉 Git 你希望在下一次提交中包含所有更改。 git commit
会拍摄这些更改的快照。
git add .
git commit -m "a short description of the change"
git add .
git commit -m "a short description of the change"
有关如何在 GitHub Desktop 中暂存和提交更改的详细信息,请参阅“在 GitHub Desktop 中提交并审查对项目的更改”。
暂存和提交文件时,您主要是告诉 Git:“好吧,拍摄我的更改快照!” 您可以继续进行更多更改,并拍摄更多提交快照。
目前,您的更改仅存在于本地。 当您准备好将更改推送到 GitHub Enterprise Server 时,请将更改推送到远程。
git push
git push
有关如何在 GitHub Desktop 中推送更改的详细信息,请参阅“将更改从 GitHub Desktop 推送到 GitHub”。
创建拉取请求
最后,您可以对主项目提出更改建议了! 这是产生他人项目复刻的最后一步,可以说是最重要的一步。 如果您做了您认为有益于整个社区的改变,绝对应该考虑回馈社区。
为此,请转到项目所在的 GitHub Enterprise Server 存储库。 在本示例中,它位于 https://github.com/<your_username>/Spoon-Knife
。 你将看到一个横幅,指示你的分支是 octocat:main
之前的一个提交。 单击“参与”,然后单击“打开拉取请求” 。
GitHub Enterprise Server 会将你带到一个页面,其中显示了分支和 octocat/Spoon-Knife
存储库之间的差异。 单击“创建拉取请求”****。
GitHub Enterprise Server 将带您进入一个页面,您可以在其中输入更改的标题和说明。 重要的是要提供尽可能多的有用信息,在首要位置说明您提出此拉取请求的理由。 项目所有者需要能够确定您的更改是否像您认为的那样对每个人都有用。 最后,单击“创建拉取请求”。
管理反馈
拉取请求是一个讨论区域。 如果项目所有者拒绝你的拉取请求,或者要求提供有关请求原因的详细信息,请不要生气。 即使项目所有者选择不合并拉取请求,更改仍存在于分支中。 其他人可能会发现你的分支比原始项目更有价值。
查找项目
您已成功复刻并回馈存储库。 继续努力,争取做出更多贡献!