要贡献新内容页面或改进现有内容页面,请开启一个拉取请求 (PR)。确保遵循 开始之前 章节中的所有要求。
如果你的修改很小,或者你不熟悉 git,请阅读 使用 GitHub 进行更改 来学习如何编辑页面。
如果你的修改很大,请阅读 从本地仓库分支进行工作 来学习如何在你自己的电脑上进行本地修改。
如果你对 git 工作流不太熟悉,这里有一种更简单的开启拉取请求的方法。图 1 概述了这些步骤,详细信息随后列出。
图 1. 使用 GitHub 开启 PR 的步骤。
在你看到问题的页面上,在右侧导航栏中选择 编辑此页面 (Edit this page) 选项。
在 GitHub 的 markdown 编辑器中进行你的修改。
在编辑器上方的右侧,选择 提交更改 (Commit changes)。在第一个字段中,为你的提交信息输入标题。在第二个字段中,提供详细说明。
选择 提议更改 (Propose changes)。
选择 创建拉取请求 (Create pull request)。
出现 开启拉取请求 (Open a pull request) 屏幕。填写表单。
选择 创建拉取请求 (Create pull request)。
在合并拉取请求之前,Kubernetes 社区成员会对其进行审查和批准。k8s-ci-robot 会根据页面中提到的最近所有者建议审阅者。如果你有特定的审阅者人选,请在评论中写下他们的 GitHub 用户名。
如果审阅者要求你进行更改
如果你在等待审阅者反馈,请每 7 天跟进一次。你也可以在 #sig-docs Slack 频道中发布消息。
当你的审查完成时,审阅者会合并你的 PR,你的更改将在几分钟后上线。
如果你有更丰富的 git 经验,或者你的更改超过了几行,请从本地分支进行工作。
确保你的电脑上安装了 git。你也可以使用 git UI 应用程序。
图 2 显示了从本地分支工作时需要遵循的步骤。每个步骤的详细信息如下。
图 2. 通过本地分支进行更改的工作方式。
kubernetes/website 仓库。在终端窗口中,克隆你的分支并更新 Docsy Hugo 主题
git clone git@github.com:<github_username>/website
cd website
导航到新的 website 目录。将 kubernetes/website 仓库设置为 upstream 远程仓库
cd website
git remote add upstream https://github.com/kubernetes/website.git
确认你的 origin 和 upstream 仓库
git remote -v
输出类似于
origin git@github.com:<github_username>/website.git (fetch)
origin git@github.com:<github_username>/website.git (push)
upstream https://github.com/kubernetes/website.git (fetch)
upstream https://github.com/kubernetes/website.git (push)
从你分支的 origin/main 和 kubernetes/website 的 upstream/main 获取提交
git fetch origin
git fetch upstream
这确保了在开始进行更改之前,你的本地仓库是最新的。
确定要在哪个分支上进行工作
upstream/main。upstream/main。如果你在选择分支方面需要帮助,请在 #sig-docs Slack 频道中提问。
创建一个基于步骤 1 中确定的分支的新分支。此示例假设基础分支是 upstream/main
git checkout -b <my_new_branch> upstream/main
使用文本编辑器进行你的更改。
在任何时候,都可以使用 git status 命令查看你更改的文件。
当你准备好提交拉取请求时,提交你的更改。
在你的本地仓库中,检查你需要提交哪些文件
git status
输出类似于
On branch <my_new_branch>
Your branch is up to date with 'origin/<my_new_branch>'.
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: content/en/docs/contribute/new-content/contributing-content.md
no changes added to commit (use "git add" and/or "git commit -a")
将 Changes not staged for commit (未暂存以供提交的更改) 下列出的文件添加到提交中
git add <your_file_name>
对每个文件重复此操作。
添加所有文件后,创建一个提交
git commit -m "Your commit message"
将你的本地分支及其新提交推送到你的远程分支
git push origin <my_new_branch>
在推送更改或开启拉取请求之前,在本地预览你的更改是一个好主意。本地预览 一文解释了如何运行本地网站并预览建议的更改。
图 3 显示了从你的分支向 kubernetes/website 开启 PR 的步骤。详细信息如下。
请注意,贡献者可以将 kubernetes/website 称为 k/website。
图 3. 从你的分支向 kubernetes/website 开启 PR 的步骤。
在网页浏览器中,转到 kubernetes/website 仓库。
选择 新建拉取请求 (New Pull Request)。
选择 跨分支比较 (compare across forks)。
从 head repository (头仓库) 下拉菜单中,选择你的分支。
从 compare (比较) 下拉菜单中,选择你的分支。
选择 创建拉取请求 (Create Pull Request)。
为你的拉取请求添加描述
标题 (50 个字符以内):总结更改意图。
描述:更详细地描述更改内容。
Fixes #12345 或 Closes #12345。如果使用这些关键字,GitHub 的自动化机制将在合并 PR 后关闭提到的议题。如果还有其他相关的 PR,请一并链接。选择 创建拉取请求 (Create pull request) 按钮。
恭喜!你的拉取请求已在 Pull requests 中显示。
开启 PR 后,GitHub 会运行自动化测试,并尝试使用 Netlify 部署预览。
GitHub 还会自动为 PR 分配标签,以帮助审阅者。如果需要,你也可以添加标签。更多信息,请参阅 添加和移除议题标签。
进行更改后,修改你之前的提交
git commit -a --amend
-a:提交所有更改--amend:修改上一次提交,而不是创建一个新的提交如果需要,更新你的提交信息。
使用 git push origin <my_new_branch> 来推送你的更改并重新运行 Netlify 测试。
有时审阅者会对你的拉取请求进行提交。在进行任何其他更改之前,请获取这些提交。
从你的远程分支获取提交并重置你的工作分支
git fetch origin
git rebase origin/<your-branch-name>
重置后,强制将新更改推送到你的分支
git push --force-with-lease origin <your-branch-name>
如果另一个贡献者在另一个 PR 中对同一文件进行了更改,可能会产生合并冲突。你必须解决 PR 中的所有合并冲突。
更新你的分支并重置你的本地分支
git fetch origin
git rebase origin/<your-branch-name>
然后强制将更改推送到你的分支
git push --force-with-lease origin <your-branch-name>
从 kubernetes/website 的 upstream/main 获取更改并重置你的分支
git fetch upstream
git rebase upstream/main
检查重置的结果
git status
这会导致一些文件被标记为存在冲突。
打开每个存在冲突的文件并查找冲突标记:>>>, <<<, 和 ===。解决冲突并删除冲突标记。
将文件添加到变更集
git add <filename>
继续重置
git rebase --continue
根据需要重复步骤 2 到 5。
应用所有提交后,git status 命令将显示重置已完成。
强制将分支推送到你的分支
git push --force-with-lease origin <your-branch-name>
拉取请求将不再显示任何冲突。
如果你的 PR 有多个提交,你必须在合并 PR 之前将它们压缩成一个提交。你可以在 PR 的 Commits (提交) 选项卡上,或者通过在本地运行 git log 命令来检查提交数量。
vim 是你的命令行文本编辑器。开始交互式重置
git rebase -i HEAD~<number_of_commits_in_branch>
压缩提交是重置的一种形式。-i 开关告诉 git 你想要进行交互式重置。HEAD~<分支中的提交数量> 指示在重置时查看多少个提交。
输出类似于
pick d875112ca Original commit
pick 4fa167b80 Address feedback 1
pick 7d54e15ee Address feedback 2
# Rebase 3d18sf680..7d54e15ee onto 3d183f680 (3 commands)
...
# These lines can be re-ordered; they are executed from top to bottom.
输出的第一部分列出了重置中的提交。第二部分列出了每个提交的选项。更改单词 pick 将在重置完成后更改提交的状态。
就重置而言,请专注于 squash 和 pick。
开始编辑文件。
更改原始文本
pick d875112ca Original commit
pick 4fa167b80 Address feedback 1
pick 7d54e15ee Address feedback 2
到
pick d875112ca Original commit
squash 4fa167b80 Address feedback 1
squash 7d54e15ee Address feedback 2
这将提交 4fa167b80 Address feedback 1 和 7d54e15ee Address feedback 2 压缩到 d875112ca Original commit 中,仅保留 d875112ca Original commit 作为时间线的一部分。
保存并退出你的文件。
推送你的压缩提交
git push --force-with-lease origin <branch_name>
Kubernetes 项目 包含 50 多个仓库。其中许多仓库包含文档:面向用户的帮助文本、错误消息、API 参考或代码注释。
如果你看到想要改进的文本,请使用 GitHub 搜索 Kubernetes 组织下的所有仓库。这可以帮助你找到提交议题或 PR 的位置。
每个仓库都有自己的流程和程序。在你提交议题或 PR 之前,请阅读该仓库的 README.md, CONTRIBUTING.md 和 code-of-conduct.md(如果存在)。
大多数仓库都使用议题和 PR 模板。查看一些已开启的议题和 PR,以了解团队的流程。在提交议题或 PR 时,请确保尽可能详细地填写模板。