跳至主要內容
版本:5.0

GitHub 提交 PR

本文將指導您透過 Git 貢獻 RocketMQ

GitHub 遠端儲存庫

作為先決條件,本節簡要說明使用 Git 貢獻 RocketMQ 的原因。如果您有相關知識,可以跳過

首先,您需要了解 Git 和 GitHub

思考:從開發人員的角度來看,您如何與他人合作完成專案?

如果您想到封裝、壓縮,然後複製和貼上,請考慮將參與者的範圍擴大到 10k+ 級別

這就是遠端儲存庫的重點:開發人員可以輕鬆地從 GitHub 存取儲存庫程式碼,並將開發分支提交到遠端儲存庫以與他人溝通和分享

1656601484232

那麼,有了這個公開儲存庫,接下來呢?

如何下載遠端儲存庫的程式碼?

如何將開發分支提交到遠端儲存庫?

Git 貢獻指南

① fork apache/rocketmq 到個人 GitHub 遠端儲存庫

https://github.com/cuser/rocketmq.git # cuser's rocketmq repo[repository] url

注意:cuser GitHub 使用者名稱,Fork 之後您可以在個人首頁儲存庫中找到複製的儲存庫,並檢視網址

② 自行安裝 Git 並將其複製到您的本機儲存庫

git clone https://github.com/cuser/rocketmq.git # git clone [repo url]

注意:複製後的本機儲存庫將使用 GitHub 儲存庫作為遠端儲存庫,並命名為 origin

③ 取得開發分支的最新程式碼

git rebase origin/develop # git rebase [branch]

注意: rebase <branch> 基本概念為基地交換,可以透過連結範例了解此步驟的必要性

④ 在本機儲存庫中進行變更

git checkout -b RocketMQ-Vxx.0 # git checkout [-b] [new-branch]
git add /rocketmq/pom.xml # git add [dir/file]
git commit -a -m "pom" # git commit [-all] [-msg] [message]

注意: 參考 Git,使用相對路徑切換至與 .git 相同的目錄

⑤ 將變更推送到遠端儲存庫

git push --set-upstream apache RocketMQ-Vxx.0   # push branch to https://github.com/cuser/rocketmq-site.git

GitHub Commit PR

以下:以提交 PR 至 new-official-website 分支為例,說明 PR 流程

參考 Git 貢獻指南修改本機儲存庫中的分支,並推送到 GitHub 遠端儲存庫

git checkout new-official-website   # git checkout -b new-official-website
git push origin new-official-website # push to https://github.com/cuser/rocketmq-site.git

① 將 GitHub 遠端儲存庫切換至開發分支 new-official-website

② 建立 Pull Request,並在 Contribute 下方點選 Open Pull Request

③ 跨 Fork 比較,選擇請求分支和開發分支

1656580236831

base repository / base:請求儲存庫和請求分支

head repository / compare:開發儲存庫和分支

務必正確選擇請求分支和開發分支,並在取得分支擁有者同意後才請求合併

④ 填寫 PR 摘要,以大寫字母簡述 PR 內容

1656589498318

​ 提交 PR 前,請確認以下事項

  1. A [GitHub Issue]( apache/rocketmq: Mirror of Apache RocketMQ (github.com) ) 對應 PR 已建立
  2. 修改內容符合 編碼規範 程式規範
  3. PR 摘要以 [ISSUE #XXX] 開頭,簡述變更需求
  4. 說明 PR 變更需求、變更日誌和驗證資訊,參考 PR Demo
  5. 提交內容時,請提供完整的測試案例,並確保基本檢查、單元測試和整合測試通過

⑤ 點擊「建立 pull request」,請求合併分支

⑥ 此時,PR 已出現在 apache/rocketmq-site 遠端倉庫,所有協作者都可以審查 PR 並提出建議

您可以根據評論在本地進行修改並多次提交。合併請求和變更提交的資訊會同時顯示在 PR 頁面、議題清單和 RocketMQ 郵件清單上,以便提醒提交者及時審查 PR

合併 PR

開源專案開發分支合併由提交者執行。

① 合併貢獻者 PR

git checkout develop    # switch to local develop branch
git pull apache develop # fast-forward to current remote HEAD
git pull --squash https://github.com/cuser/rocketmq.git RocketMQ-Vxx.0 # merge to branch

一個 pull request 合併分支可能包含多個提交。建議使用 --squash 指令將提交壓縮成一個提交

在合併之前,務必解決合併衝突並確保當前分支與遠端分支同步

請閱讀[Git pull]( Git - git-pull Documentation (git-scm.com) ) 以瞭解快速轉送和其他資訊

② 合併提交者 PR

如果提交者合併自己的 PR,請執行指令 [Git merge]( Git - git-merge Documentation (git-scm.com) )

git checkout develop      # switch to local develop branch
git pull apache develop # fast-forward to current remote HEAD
git merge --squash RocketMQ-Vxx.0 # merge to branch

③ 進行例行補丁檢查,使用內建測試案例建置專案,並務必修改變更日誌

④ 以上所有步驟完成後,提交合併並附上以下說明,回饋分支狀態給開發人員,並關閉 PR

git commit --author="contributor_name <contributor_email>" -a -m "RocketMQ-Vxx.0 description closes apache/rocketmq#ZZ"

有關關閉 PR 的詳細資訊,請參閱 關閉 PR

⑤ 將合併的分支推送到 apache/rocketmq 遠端倉庫

git push apache develop

提交 PR 後,它將保留在 GitHub 遠端倉庫中,您也可以同時更新您的個人 GitHub 倉庫

git push origin develop

注意:squash 會捨棄開發分支的提交資訊

拒絕 PR

拒絕 PR:表示不會執行任何拉取或合併,只會提交拒絕 PR 的訊息

git commit --allow-empty -m "RocketMQ-Vxx.0 closes apache/rocketmq#ZZ *Won't fix*"
git push apache develop

在 GitHub 上關閉 PR #ZZ