打开拉取请求

要贡献新的内容页面或改进现有的内容页面,请打开拉取请求 (PR)。请确保您遵循开始之前部分中的所有要求。

如果您的更改很小,或者您不熟悉 git,请阅读使用 GitHub 进行更改以了解如何编辑页面。

如果您的更改很大,请阅读从本地分支工作以了解如何在您的计算机上本地进行更改。

使用 GitHub 进行更改

如果您对 git 工作流程不太熟悉,这里有一种更简单的打开拉取请求的方法。图 1 概述了步骤和详细信息。

flowchart LR A([fa:fa-user 新
贡献者]) --- id1[(kubernetes/website
GitHub)] subgraph tasks[使用 GitHub 进行更改] direction TB 0[ ] -.- 1[1. 编辑此页面] --> 2[2. 使用 GitHub markdown
编辑器进行更改] 2 --> 3[3. 填写“建议文件更改”] end subgraph tasks2[ ] direction TB 4[4. 选择“建议文件更改”] --> 5[5. 选择“创建拉取请求”] --> 6[6. 填写“打开拉取请求”] 6 --> 7[7. 选择“创建拉取请求”] end id1 --> tasks --> tasks2 classDef grey fill:#dddddd,stroke:#ffffff,stroke-width:px,color:#000000, font-size:15px; classDef white fill:#ffffff,stroke:#000,stroke-width:px,color:#000,font-weight:bold classDef k8s fill:#326ce5,stroke:#fff,stroke-width:1px,color:#fff; classDef spacewhite fill:#ffffff,stroke:#fff,stroke-width:0px,color:#000 class A,1,2,3,4,5,6,7 grey class 0 spacewhite class tasks,tasks2 white class id1 k8s

图 1. 使用 GitHub 打开 PR 的步骤。

  1. 在您看到问题的页面上,选择右侧导航面板中的**编辑此页面**选项。

  2. 在 GitHub markdown 编辑器中进行更改。

  3. 在编辑器下方,填写**建议文件更改**表单。在第一个字段中,为您的提交消息指定标题。在第二个字段中,提供描述。

  4. 选择**建议文件更改**。

  5. 选择**创建拉取请求**。

  6. 将出现**打开拉取请求**屏幕。填写表单

    • 拉取请求的**主题**字段默认为提交摘要。您可以根据需要进行更改。
    • **正文**包含您的扩展提交消息(如果有)和一些模板文本。添加模板文本要求的详细信息,然后删除额外的模板文本。
    • 保持选中**允许维护者编辑**复选框。
  7. 选择**创建拉取请求**。

在 GitHub 中处理反馈

在合并拉取请求之前,Kubernetes 社区成员会对其进行审查和批准。k8s-ci-robot 会根据页面中提到的最近所有者建议审查者。如果您有特定的人选,请在评论中留下他们的 GitHub 用户名。

如果审查者要求您进行更改

  1. 转到**已更改文件**选项卡。
  2. 选择拉取请求更改的任何文件上的铅笔(编辑)图标。
  3. 进行请求的更改。
  4. 提交更改。

如果您正在等待审查者,请每 7 天联系一次。您也可以在 #sig-docs Slack 频道中发布消息。

审查完成后,审查者会合并您的 PR,您的更改将在几分钟后生效。

从本地分支工作

如果您对 git 更有经验,或者您的更改超过几行,请从本地分支工作。

确保您的计算机上已安装git。您也可以使用 git UI 应用程序。

图 2 显示了从本地分支工作时要遵循的步骤。每个步骤的详细信息如下。

flowchart LR 1[Fork kubernetes/website
仓库] --> 2[创建本地克隆
并设置上游] subgraph changes[您的更改] direction TB S[ ] -.- 3[创建一个分支
例如:my_new_branch] --> 3a[使用
文本编辑器进行更改] --> 4["在本地预览您的更改
使用 Hugo
(localhost:1313)
或构建容器镜像"] end subgraph changes2[提交 / 推送] direction TB T[ ] -.- 5[提交您的更改] --> 6[将提交推送到
origin/my_new_branch] end 2 --> changes --> changes2 classDef grey fill:#dddddd,stroke:#ffffff,stroke-width:px,color:#000000, font-size:15px; classDef white fill:#ffffff,stroke:#000,stroke-width:px,color:#000,font-weight:bold classDef k8s fill:#326ce5,stroke:#fff,stroke-width:1px,color:#fff; classDef spacewhite fill:#ffffff,stroke:#fff,stroke-width:0px,color:#000 class 1,2,3,3a,4,5,6 grey class S,T spacewhite class changes,changes2 white

图 2. 从本地分支工作以进行更改。

Fork kubernetes/website 仓库

  1. 导航到kubernetes/website仓库。
  2. 选择**Fork**。

创建本地克隆并设置上游

  1. 在终端窗口中,克隆您的分支并更新Docsy Hugo 主题

    git clone [email protected]:<github_username>/website
    cd website
    git submodule update --init --recursive --depth 1
    
  2. 导航到新的 website 目录。将 kubernetes/website 仓库设置为 upstream 远程

    cd website
    
    git remote add upstream https://github.com/kubernetes/website.git
    
  3. 确认您的 originupstream 仓库

    git remote -v
    

    输出类似于

    origin	[email protected]:<github_username>/website.git (fetch)
    origin	[email protected]:<github_username>/website.git (push)
    upstream	https://github.com/kubernetes/website.git (fetch)
    upstream	https://github.com/kubernetes/website.git (push)
    
  4. 从您的分支的 origin/mainkubernetes/websiteupstream/main 获取提交

    git fetch origin
    git fetch upstream
    

    这可以确保您的本地仓库在您开始进行更改之前是最新的。

创建一个分支

  1. 决定您的工作基于哪个分支

    • 对于现有内容的改进,请使用 upstream/main
    • 对于有关现有功能的新内容,请使用 upstream/main
    • 对于本地化内容,请使用本地化的约定。有关更多信息,请参阅本地化 Kubernetes 文档
    • 对于即将发布的 Kubernetes 版本中的新功能,请使用功能分支。有关更多信息,请参阅为发布版本编写文档
    • 对于多个 SIG Docs 贡献者协作进行的长期工作(例如内容重组),请使用为此工作创建的特定功能分支。

    如果您在选择分支方面需要帮助,请在 #sig-docs Slack 频道中询问。

  2. 根据步骤 1 中标识的分支创建一个新分支。此示例假设基础分支是 upstream/main

    git checkout -b <my_new_branch> upstream/main
    
  3. 使用文本编辑器进行更改。

您可以随时使用 git status 命令查看您已更改的文件。

提交您的更改

当您准备好提交拉取请求时,请提交您的更改。

  1. 在您的本地仓库中,检查您需要提交哪些文件

    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")
    
  2. 将**未暂存以进行提交的更改**下列出的文件添加到提交中

    git add <your_file_name>
    

    对每个文件重复此操作。

  3. 添加所有文件后,创建一个提交

    git commit -m "Your commit message"
    
  4. 将您的本地分支及其新提交推送到您的远程分支

    git push origin <my_new_branch>
    

在本地预览您的更改

最好在推送更改或打开拉取请求之前在本地预览您的更改。预览允许您捕获构建错误或 markdown 格式问题。

您可以构建网站的容器镜像,也可以在本地运行 Hugo。构建容器镜像速度较慢,但会显示Hugo 短代码,这对于调试非常有用。

  1. 在本地构建容器镜像
    仅当您正在测试对 Hugo 工具本身的更改时,才需要执行此步骤

    # Run this in a terminal (if required)
    make container-image
    
  2. 在容器中启动 Hugo

    # Run this in a terminal
    make container-serve
    
  3. 在 Web 浏览器中,导航到 https://127.0.0.1:1313。Hugo 会监视更改并根据需要重建网站。

  4. 要停止本地 Hugo 实例,请返回终端并键入 Ctrl+C,或关闭终端窗口。

或者,在您的计算机上安装并使用 hugo 命令

  1. 安装 Hugo 版本,该版本在 website/netlify.toml 中指定。

  2. 如果您尚未更新您的网站仓库,则 website/themes/docsy 目录为空。如果没有主题的本地副本,则无法构建网站。要更新网站主题,请运行

    git submodule update --init --recursive --depth 1
    
  3. 在终端中,转到您的 Kubernetes 网站仓库并启动 Hugo 服务器

    cd <path_to_your_repo>/website
    hugo server --buildFuture
    
  4. 在 Web 浏览器中,导航到 https://127.0.0.1:1313。Hugo 会监视更改并根据需要重建网站。

  5. 要停止本地 Hugo 实例,请返回终端并键入 Ctrl+C,或关闭终端窗口。

从您的分支打开到 kubernetes/website 的拉取请求

图 3 显示了从您的分支打开到 kubernetes/website 的 PR 的步骤。详细信息如下。

请注意,贡献者可以将 kubernetes/website 称为 k/website

flowchart LR subgraph first[ ] direction TB 1[1. 转到 kubernetes/website 仓库] --> 2[2. 选择新建拉取请求] 2 --> 3[3. 选择跨分支比较] 3 --> 4[4. 从
头部仓库下拉菜单中选择您的分支] end subgraph second [ ] direction TB 5[5. 从
比较下拉菜单中选择您的分支] --> 6[6. 选择创建拉取请求] 6 --> 7[7. 添加描述
到您的 PR] 7 --> 8[8. 选择创建拉取请求] end first --> second classDef grey fill:#dddddd,stroke:#ffffff,stroke-width:px,color:#000000, font-size:15px; classDef white fill:#ffffff,stroke:#000,stroke-width:px,color:#000,font-weight:bold class 1,2,3,4,5,6,7,8 grey class first,second white

图 3. 从您的分支打开到 kubernetes/website 的 PR 的步骤。

  1. 在 Web 浏览器中,转到 kubernetes/website 仓库。

  2. 选择 新建拉取请求

  3. 选择 跨分支比较

  4. 头部仓库 下拉菜单中,选择您的分支。

  5. 比较 下拉菜单中,选择您的分支。

  6. 选择 创建拉取请求

  7. 为您的拉取请求添加描述

    • 标题(50 个字符或更少):总结更改的意图。

    • 描述:更详细地描述更改。

      • 如果有相关的 GitHub 问题,请在描述中包含 Fixes #12345Closes #12345。如果使用 GitHub 的自动化功能,则会在合并 PR 后关闭提到的问题。如果有其他相关的 PR,也请链接它们。
      • 如果您需要有关特定内容的建议,请在描述中包含您希望审阅者考虑的任何问题。
  8. 选择 创建拉取请求 按钮。

恭喜!您的拉取请求在 拉取请求 中可用。

打开 PR 后,GitHub 会运行自动化测试,并尝试使用 Netlify 部署预览。

  • 如果 Netlify 构建失败,请选择 详细信息 以获取更多信息。
  • 如果 Netlify 构建成功,请选择 详细信息 将打开 Kubernetes 网站的暂存版本,其中应用了您的更改。审阅者将以此方式检查您的更改。

GitHub 还会自动为 PR 分配标签,以帮助审阅者。如果需要,您也可以添加它们。有关更多信息,请参阅 添加和删除问题标签

在本地解决反馈

  1. 进行更改后,修改您之前的提交

    git commit -a --amend
    
    • -a:提交所有更改
    • --amend:修改之前的提交,而不是创建新的提交
  2. 如果需要,请更新您的提交消息。

  3. 使用 git push origin <my_new_branch> 推送您的更改并重新运行 Netlify 测试。

来自审阅者的更改

有时审阅者会提交到您的拉取请求。在进行任何其他更改之前,请获取这些提交。

  1. 从您的远程分支获取提交并重新定位您的工作分支

    git fetch origin
    git rebase origin/<your-branch-name>
    
  2. 重新定位后,强制推送新更改到您的分支

    git push --force-with-lease origin <your-branch-name>
    

合并冲突和重新定位

如果另一个贡献者在另一个 PR 中对同一个文件提交了更改,则可能会产生合并冲突。您必须解决 PR 中的所有合并冲突。

  1. 更新您的分支并重新定位您的本地分支

    git fetch origin
    git rebase origin/<your-branch-name>
    

    然后将更改强制推送到您的分支

    git push --force-with-lease origin <your-branch-name>
    
  2. kubernetes/websiteupstream/main 获取更改并重新定位您的分支

    git fetch upstream
    git rebase upstream/main
    
  3. 检查重新定位的结果

    git status
    

    这将导致许多文件被标记为冲突。

  4. 打开每个冲突的文件并查找冲突标记:>>><<<===。解决冲突并删除冲突标记。

  5. 将文件添加到变更集中

    git add <filename>
    
  6. 继续重新定位

    git rebase --continue
    
  7. 根据需要重复步骤 2 到 5。

    应用所有提交后,git status 命令将显示重新定位已完成。

  8. 将分支强制推送到您的分支

    git push --force-with-lease origin <your-branch-name>
    

    拉取请求不再显示任何冲突。

压缩提交

如果您的 PR 中有多个提交,则必须在合并 PR 之前将它们压缩为一个提交。您可以在 PR 的 提交 选项卡上或通过在本地运行 git log 命令来检查提交的数量。

  1. 开始交互式重新定位

    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 会在重新定位完成后更改提交的状态。

    为了重新定位,请关注 squashpick

  2. 开始编辑文件。

    更改原始文本

    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 解决反馈 17d54e15ee 解决反馈 2 压缩到 d875112ca 原始提交 中,只留下 d875112ca 原始提交 作为时间线的一部分。

  3. 保存并退出文件。

  4. 推送您压缩的提交

    git push --force-with-lease origin <branch_name>
    

为其他仓库做出贡献

Kubernetes 项目 包含 50 多个仓库。其中许多仓库都包含文档:面向用户的帮助文本、错误消息、API 参考或代码注释。

如果您看到想要改进的文本,请使用 GitHub 搜索 Kubernetes 组织中的所有仓库。这可以帮助您确定在哪里提交问题或 PR。

每个仓库都有自己的流程和程序。在提交问题或 PR 之前,请阅读该仓库的 README.mdCONTRIBUTING.mdcode-of-conduct.md(如果存在)。

大多数仓库都使用问题和 PR 模板。请查看一些未解决的问题和 PR,以了解该团队的流程。在提交问题或 PR 时,请确保尽可能详细地填写模板。

下一步是什么

  • 阅读 审阅 以详细了解审阅流程。
上次修改时间:2023 年 11 月 14 日下午 2:22 PST:[en] 在任何地方都以相同的方式提及 kubernetes/websites (#40493) (01ac54510a)