GitHub 提交 PR
本文將指導您透過 Git 貢獻 RocketMQ
GitHub 遠端儲存庫
作為先決條件,本節簡要說明使用 Git 貢獻 RocketMQ 的原因。如果您有相關知識,可以跳過
首先,您需要了解 Git 和 GitHub
思考:從開發人員的角度來看,您如何與他人合作完成專案?
如果您想到封裝、壓縮,然後複製和貼上,請考慮將參與者的範圍擴大到 10k+ 級別
這就是遠端儲存庫的重點:開發人員可以輕鬆地從 GitHub 存取儲存庫程式碼,並將開發分支提交到遠端儲存庫以與他人溝通和分享
那麼,有了這個公開儲存庫,接下來呢?
如何下載遠端儲存庫的程式碼?
如何將開發分支提交到遠端儲存庫?
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 比較,選擇請求分支和開發分支
base repository / base:請求儲存庫和請求分支
head repository / compare:開發儲存庫和分支
務必正確選擇請求分支和開發分支,並在取得分支擁有者同意後才請求合併
④ 填寫 PR 摘要,以大寫字母簡述 PR 內容
提交 PR 前,請確認以下事項
- A [GitHub Issue]( apache/rocketmq: Mirror of Apache RocketMQ (github.com) ) 對應 PR 已建立
- 修改內容符合 編碼規範 程式規範
- PR 摘要以 [ISSUE #XXX] 開頭,簡述變更需求
- 說明 PR 變更需求、變更日誌和驗證資訊,參考 PR Demo
- 提交內容時,請提供完整的測試案例,並確保基本檢查、單元測試和整合測試通過
⑤ 點擊「建立 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