開啟拉取請求
注意
程式碼開發者:如果您正在為即將釋出的 Kubernetes 版本編寫新功能文件,請參閱文件新功能。要貢獻新內容頁面或改進現有內容頁面,請開啟一個 Pull Request (PR)。確保您遵循開始之前部分的所有要求。
如果您的更改很小,或者您不熟悉 Git,請閱讀使用 GitHub 進行的更改以瞭解如何編輯頁面。
如果您的更改很大,請閱讀從本地 fork 開始工作以瞭解如何在本地計算機上進行更改。
使用 GitHub 進行的更改
如果您對 Git 工作流不太熟悉,這裡有一個更簡單的方法來開啟 Pull Request。圖 1 概述了這些步驟,詳細資訊如下。
Contributor]) --- 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. 選擇“建立 Pull Request”] --> 6[6. 填寫“開啟 Pull Request”] 6 --> 7[7. 選擇“建立 Pull Request”] 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 的步驟。
在您看到問題的頁面上,在右側導航面板中選擇“編輯此頁面”選項。
在 GitHub Markdown 編輯器中進行更改。
在編輯器下方,填寫“建議檔案更改”表單。在第一個欄位中,為您的提交訊息新增標題。在第二個欄位中,提供描述。
注意
請勿在提交訊息中使用任何GitHub 關鍵字。稍後可以將它們新增到 Pull Request 描述中。選擇“建議檔案更改”。
選擇“建立 Pull Request”。
將出現“開啟 Pull Request”螢幕。填寫表單。
- Pull Request 的“主題”欄位預設為提交摘要。如果需要,可以更改它。
- “正文”包含您的擴充套件提交訊息(如果您有的話)以及一些模板文字。將模板文字要求的詳細資訊新增到其中,然後刪除多餘的模板文字。
- 保留“允許維護者編輯”複選框的選中狀態。
注意
PR 描述是幫助審閱者理解您更改的好方法。有關更多資訊,請參閱開啟 PR。選擇“建立 Pull Request”。
在 GitHub 中處理反饋
在合併 Pull Request 之前,Kubernetes 社群成員會對其進行審查和批准。k8s-ci-robot
會根據頁面中提到的最近所有者推薦審閱者。如果您有特定的人選,請在評論中留下他們的 GitHub 使用者名稱。
如果審閱者要求您進行更改
- 轉到“已更改檔案”選項卡。
- 選擇 Pull Request 所更改的任何檔案上的鉛筆(編輯)圖示。
- 進行請求的更改。
- 提交更改。
如果您正在等待審閱者,每 7 天聯絡一次。您也可以在 #sig-docs
Slack 頻道中釋出訊息。
審查完成後,審閱者會合並您的 PR,您的更改將在幾分鐘後上線。
從本地 fork 開始工作
如果您對 Git 更熟悉,或者您的更改大於幾行,請從本地 fork 開始工作。
確保您的計算機上已安裝 Git。您也可以使用 Git UI 應用程式。
圖 2 展示了從本地 fork 工作時要遵循的步驟。每個步驟的詳細資訊如下。
repository] --> 2[建立本地克隆
並設定 upstream] subgraph changes[您的更改] direction TB S[ ] -.- 3[建立分支
例如:my_new_branch] --> 3a[使用
文字編輯器進行更改] --> 4["本地預覽您的更改
使用 Hugo
(localhost:1313)
或構建容器映象"] end subgraph changes2[Commit / Push] 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 工作以進行更改。
Fork kubernetes/website 儲存庫
- 導航到
kubernetes/website
儲存庫。 - 選擇“Fork”。
建立本地克隆並設定 upstream
在終端視窗中,克隆您的 fork 並更新Docsy Hugo 主題
git clone git@github.com:<github_username>/website cd website
導航到新的
website
目錄。將kubernetes/website
儲存庫設定為upstream
remotecd 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)
從您的 fork 的
origin/main
和kubernetes/website
的upstream/main
中獲取提交git fetch origin git fetch upstream
這可以確保您的本地儲存庫在開始更改之前是最新的。
注意
此工作流程與Kubernetes Community GitHub Workflow 不同。在將更新推送到您的 fork 之前,您無需將本地的main
副本與upstream/main
合併。
建立分支
決定基於哪個分支進行工作
- 對於現有內容的改進,請使用
upstream/main
。 - 對於有關現有功能的新內容,請使用
upstream/main
。 - 對於本地化內容,請遵循本地化的約定。有關更多資訊,請參閱本地化 Kubernetes 文件。
- 對於即將釋出的 Kubernetes 版本中的新功能,請使用功能分支。有關更多資訊,請參閱為釋出編寫文件。
- 對於由多個 SIG Docs 貢獻者協作的長期專案,例如內容重組,請使用為此專案建立的特定功能分支。
如果您需要選擇分支的幫助,請在
#sig-docs
Slack 頻道中提問。- 對於現有內容的改進,請使用
基於第 1 步中確定的分支建立新分支。此示例假定基礎分支為
upstream/main
git checkout -b <my_new_branch> upstream/main
使用文字編輯器進行更改。
隨時使用 git status
命令檢視您已更改的檔案。
提交您的更改
當您準備好提交 Pull Request 時,請提交您的更改。
在您的本地儲存庫中,檢查需要提交的檔案
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")
將“未暫存的更改”下的檔案新增到提交中
git add <your_file_name>
對每個檔案重複此操作。
新增所有檔案後,建立提交
git commit -m "Your commit message"
注意
請勿在提交訊息中使用任何GitHub 關鍵字。稍後可以將它們新增到 Pull Request 描述中。將您的本地分支及其新提交推送到您的遠端 fork
git push origin <my_new_branch>
本地預覽您的更改
在推送更改或開啟 Pull Request 之前,最好先在本地預覽您的更改。預覽可以讓您發現構建錯誤或 Markdown 格式問題。
您可以構建網站的容器映象或在本地執行 Hugo。構建容器映象速度較慢,但會顯示Hugo shortcodes,這對於除錯可能很有用。
注意
下面的命令預設使用 Docker 作為容器引擎。設定CONTAINER_ENGINE
環境變數以覆蓋此行為。在本地構建容器映象
僅當您正在測試 Hugo 工具本身的更改時,才需要此步驟# Run this in a terminal (if required) make container-image
在本地儲存庫中獲取子模組依賴項
# Run this in a terminal make module-init
在容器中啟動 Hugo
# Run this in a terminal make container-serve
在 Web 瀏覽器中,導航到
https://:1313
。Hugo 會監視更改並根據需要重新構建站點。要停止本地 Hugo 例項,請返回終端並鍵入
Ctrl+C
,或關閉終端視窗。
或者,在您的計算機上安裝並使用 hugo
命令
安裝Hugo (Extended edition) 和 Node 版本(如
website/netlify.toml
中指定)。安裝任何依賴項
npm ci
在終端中,轉到您的 Kubernetes 網站儲存庫並啟動 Hugo 伺服器
cd <path_to_your_repo>/website make serve
如果您使用的是 Windows 計算機或無法執行
make
命令,請使用以下命令hugo server --buildFuture
在 Web 瀏覽器中,導航到
https://:1313
。Hugo 會監視更改並根據需要重新構建站點。要停止本地 Hugo 例項,請返回終端並鍵入
Ctrl+C
,或關閉終端視窗。
從您的 fork 開啟 Pull Request 到 kubernetes/website
圖 3 展示了從您的 fork 開啟 PR 到 kubernetes/website 的步驟。詳細資訊如下。
請注意,貢獻者可以將 kubernetes/website
簡稱為 k/website
。
head repository 下拉選單中選擇您的 fork] end subgraph second [ ] direction TB 5[5. 從
compare 下拉選單中選擇您的分支] --> 6[6. 選擇“建立 Pull Request”] 6 --> 7[7. 新增描述
到您的 PR] 7 --> 8[8. 選擇“建立 Pull Request”] 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. 從您的 fork 到 kubernetes/website 開啟 PR 的步驟。
在 Web 瀏覽器中,轉到
kubernetes/website
儲存庫。選擇“新建 Pull Request”。
選擇“跨 fork 比較”。
從“head repository”下拉選單中,選擇您的 fork。
從“compare”下拉選單中,選擇您的分支。
選擇“建立 Pull Request”。
為您的 Pull Request 新增描述
標題(50 個字元以內):概括更改的意圖。
描述:更詳細地描述更改。
- 如果存在相關的 GitHub issue,請在描述中包含
Fixes #12345
或Closes #12345
。如果使用,GitHub 的自動化將在合併 PR 後關閉提到的 issue。如果存在其他相關的 PR,也請連結它們。 - 如果您想就特定事項獲得建議,請在描述中包含您希望審閱者思考的任何問題。
- 如果存在相關的 GitHub issue,請在描述中包含
選擇“建立 Pull Request”按鈕。
恭喜!您的 Pull Request 已在Pull requests 中可用。
開啟 PR 後,GitHub 會執行自動化測試,並嘗試使用Netlify 部署預覽。
- 如果 Netlify 構建失敗,請選擇“Details”以獲取更多資訊。
- 如果 Netlify 構建成功,選擇“Details”將開啟一個 Kubernetes 網站的暫存版本,其中應用了您的更改。這是審閱者檢查您更改的方式。
GitHub 還會自動為 PR 分配標籤,以幫助審閱者。如果需要,您也可以新增它們。有關更多資訊,請參閱新增和刪除 issue 標籤。
在本地處理反饋
進行更改後,修改您之前的提交
git commit -a --amend
-a
:提交所有更改--amend
:修改之前的提交,而不是建立新提交
如有必要,請更新您的提交訊息。
使用
git push origin <my_new_branch>
推送您的更改並重新執行 Netlify 測試。
來自審閱者的更改
有時審閱者會提交到您的 Pull Request。在進行任何其他更改之前,請獲取這些提交。
從您的遠端 fork 獲取提交併 rebase 您的工作分支
git fetch origin git rebase origin/<your-branch-name>
rebase 後,強制推送到您的 fork
git push --force-with-lease origin <your-branch-name>
合併衝突和 rebase
如果另一個貢獻者在另一個 PR 中提交了對同一檔案的更改,則可能會產生合併衝突。您必須解決 PR 中的所有合併衝突。
更新您的 fork 並 rebase 您的本地分支
git fetch origin git rebase origin/<your-branch-name>
然後強制將更改推送到您的 fork
git push --force-with-lease origin <your-branch-name>
從
kubernetes/website
的upstream/main
獲取更改並 rebase 您的分支git fetch upstream git rebase upstream/main
檢查 rebase 的結果
git status
這將導致許多檔案被標記為已衝突。
開啟每個衝突檔案並查詢衝突標記:
>>>
、<<<
和===
。解決衝突並刪除衝突標記。注意
有關更多資訊,請參閱衝突的呈現方式。將檔案新增到更改集
git add <filename>
繼續 rebase
git rebase --continue
根據需要重複步驟 2 到 5。
應用所有提交後,
git status
命令會顯示 rebase 已完成。將分支強制推送到您的 fork
git push --force-with-lease origin <your-branch-name>
Pull Request 不再顯示任何衝突。
壓縮提交
如果您的 PR 有多個提交,則必須在合併 PR 之前將它們壓縮成一個提交。您可以在 PR 的“Commits”選項卡中檢查提交數量,或在本地執行 git log
命令。
注意
本主題假定vim
是命令列文字編輯器。開始互動式 rebase
git rebase -i HEAD~<number_of_commits_in_branch>
壓縮提交是 rebase 的一種形式。
-i
開關告訴 Git 您要進行互動式 rebase。HEAD~<number_of_commits_in_branch
表示要檢視多少個提交進行 rebase。輸出類似如下:
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.
輸出的第一部分列出了 rebase 中的提交。第二部分列出了每個提交的選項。更改
pick
這個詞會改變 rebase 完成後該提交的狀態。為了 rebase 的目的,請專注於
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 組織中的所有儲存庫。這可以幫助您弄清楚在哪裡提交您的 issue 或 PR。
每個儲存庫都有自己的流程和程式。在提交 issue 或 PR 之前,請閱讀該儲存庫的 README.md
、CONTRIBUTING.md
和 code-of-conduct.md
(如果存在)。
大多數儲存庫都使用 issue 和 PR 模板。檢視一些開啟的 issues 和 PRs,以瞭解該團隊的流程。提交 issues 或 PRs 時,請務必儘可能詳細地填寫模板。
下一步
- 閱讀審查以瞭解有關審查過程的更多資訊。