23.6. 为本书做贡献¶ 在 SageMaker Studio Lab 中打开 Notebook
读者的贡献有助于我们改进本书。如果你发现任何打印错误、过时的链接、我们遗漏的引用、不够优雅的代码或不清楚的解释,请反馈给我们,帮助我们更好地服务读者。普通书籍的两次印刷(以及勘误)之间可能需要数年时间,而本书采纳一项改进通常只需要几个小时到几天。这一切都得益于版本控制和持续集成(CI)测试。为此,你需要向GitHub代码库提交一个拉取请求(pull request)。当你的拉取请求被作者合并到代码库后,你将成为一名贡献者。
23.6.1. 提交小修改¶
最常见的贡献是编辑一个句子或修复拼写错误。我们建议你在GitHub仓库中找到源文件并直接编辑。例如,你可以通过“Find file”(查找文件)按钮(图 23.6.1)来定位源文件(一个Markdown文件)。然后,点击右上角的“Edit this file”(编辑此文件)按钮,在Markdown文件中进行修改。

图 23.6.1 在Github上编辑文件。¶
完成后,在页面底部的“Propose file change”(提议文件更改)面板中填写你的更改描述,然后点击“Propose file change”按钮。这会将你重定向到一个新页面以审查你的更改(图 23.6.7)。如果一切正常,你可以点击“Create pull request”(创建拉取请求)按钮提交一个拉取请求。
23.6.2. 提出重大修改¶
如果你计划更新大段的文本或代码,那么你需要对本书使用的格式有更多的了解。源文件基于Markdown格式,并通过D2L-Book包提供了一系列扩展功能,例如引用公式、图片、章节和参考文献。你可以使用任何Markdown编辑器打开这些文件并进行修改。
如果你想修改代码,我们建议你按照第 23.1 节中的描述,使用Jupyter Notebook打开这些Markdown文件,以便运行和测试你的更改。请记得在提交更改前清除所有输出,因为我们的CI系统会执行你更新的部分以生成输出。
有些章节可能支持多种框架的实现。如果你添加一个新的代码块,请在起始行使用%%tab
来标记。例如,%%tab pytorch
表示PyTorch代码块,%%tab tensorflow
表示TensorFlow代码块,或者%%tab all
表示所有实现共享的代码块。你可以参考d2lbook
包获取更多信息。
23.6.3. 提交重大修改¶
我们建议你使用标准的Git流程来提交重大更改。简而言之,该过程如图 23.6.2所示。
图 23.6.2 为本书做贡献。¶
我们将详细引导你完成这些步骤。如果你已经熟悉Git,可以跳过本节。为具体起见,我们假设贡献者的用户名为“astonzhang”。
23.6.3.1. 安装Git¶
Git开源书籍描述了如何安装Git。在Ubuntu Linux上通常通过apt install git
命令安装,在macOS上通过安装Xcode开发者工具,或者使用GitHub的桌面客户端。如果你没有GitHub账户,你需要注册一个。
23.6.3.2. 登录GitHub¶
在浏览器中输入本书代码库的地址。点击图 23.6.3右上角红框中的Fork
按钮,创建本书仓库的一个副本。现在这是*你的副本*,你可以随心所欲地修改它。

图 23.6.3 代码仓库页面。¶
现在,本书的代码仓库将被复刻(即复制)到你的用户名下,例如图 23.6.4左上角显示的astonzhang/d2l-en
。

图 23.6.4 复刻的代码仓库。¶
23.6.3.3. 克隆仓库¶
要克隆仓库(即创建本地副本),我们需要获取其仓库地址。图 23.6.5中的绿色按钮显示了该地址。如果你打算长期保留这个复刻,请确保你的本地副本与主仓库保持同步。现在,只需按照安装中的说明开始。主要区别在于,你现在下载的是*你自己的*仓库复刻。

图 23.6.5 克隆仓库。¶
# Replace your_github_username with your GitHub username
git clone https://github.com/your_github_username/d2l-en.git
23.6.3.4. 编辑和推送¶
现在是时候编辑本书了。最好按照第 23.1 节中的说明在Jupyter Notebook中进行编辑。进行更改并检查是否正确。假设我们在文件~/d2l-en/chapter_appendix-tools-for-deep-learning/contributing.md
中修改了一个拼写错误。然后你可以检查你更改了哪些文件。
此时,Git会提示chapter_appendix-tools-for-deep-learning/contributing.md
文件已被修改。
mylaptop:d2l-en me$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: chapter_appendix-tools-for-deep-learning/contributing.md
在确认这是你想要的操作后,执行以下命令
git add chapter_appendix-tools-for-deep-learning/contributing.md
git commit -m 'Fix a typo in git documentation'
git push
更改后的代码将位于你个人仓库的复刻中。要请求将你的更改添加进去,你必须为本书的官方仓库创建一个拉取请求。
23.6.4. 小结¶
你可以使用GitHub为本书做贡献。
对于微小的更改,你可以直接在GitHub上编辑文件。
对于重大的更改,请先复刻(fork)仓库,在本地进行编辑,准备好后再提交贡献。
拉取请求是捆绑贡献的方式。尽量不要提交巨大的拉取请求,因为这会使它们难以理解和采纳。最好发送几个较小的请求。