如何建立你的第一個開源 PR
第一次開源 pull request 的難點通常不是 Git、GitHub,或建立 PR 的操作本身。真正難的是選擇一個範圍小、仍然有效、容易理解,並且有機會得到維護者 review 的任務。
Good First Issue 正是圍繞這個判斷建立的。它協助你從「我想貢獻」走到「這個 Issue 很實際,倉庫仍然活躍,也有足夠脈絡讓我提交一個有用的 PR」。
從合適的 Issue 開始
先打開 Issues 頁面。用你熟悉的工具或技術關鍵字搜尋,按標籤或語言篩選,並透過排序避免從陳舊任務開始。
有用的入口包括:
- good-first-issue:維護者標記為適合入門的 Issue。
- documentation:文件、範例、錯字和 setup 說明。
- Python、JavaScript、TypeScript:如果你想留在已經能讀懂的語言附近。
不要把標籤當成保證。它只是起點。一個好的 first issue 仍然需要清楚範圍、活躍倉庫,以及足夠資訊讓你驗證修改。
像 reviewer 一樣閱讀 Issue
在 clone 之前,先打開 Issue 詳情頁,查看它是否值得投入時間。關注標籤、倉庫、主要語言、stars、評論、反應、負責人、描述和 GitHub 源連結。
然後再看 Contributor Guide 中繼資料。Good First Issue 會總結技術棧、領域、Issue 類型、難度、預估時間、活躍狀態、清晰度、前置條件、新手友善度和研究方向等訊號。
你要尋找這些匹配點:
- Issue 描述說明了成功結果。
- 倉庫近期仍有活動,review 有可能發生。
- 所需技術棧接近你能在本機執行的範圍。
- 討論裡沒有其他人已經深入處理同一個修復。
- 研究方向給出了下一步,而不是模糊願望。
GitHub 始終是事實來源。Good First Issue 索引並總結公開資料,但資料可能過期。如果 Issue 已關閉、已分配,或被 GitHub 上新的維護者評論推翻,請以 GitHub 為準。
選擇很小的範圍
第一次 PR 要優先考慮可 review 性。維護者應該能在幾分鐘內打開 diff 並理解變更。
好的第一步通常像這樣:
- 文件改進。
- 能重現小型已知行為的測試。
- 期望結果清楚的小 bug 修復。
- 目標效果明顯的 UI 打磨。
- 你能驗證的範例、README 或 setup 說明。
避免資料庫 migration、認證、安全行為、發布自動化、依賴策略、公開 API、大範圍產品功能或不清晰的產品決策。這些以後也可能是有價值的貢獻,但因為 review 面太大,通常不適合作為第一個 PR。
寫程式前先認領 Issue
當你有了小範圍計畫後,先在 GitHub Issue 留一條簡短評論。你不是在請求開源貢獻許可,而是在確認這個範圍是否仍符合維護者期待。
Hi! I would like to work on this as my first contribution to the project.
My plan is to update <small, specific area> by <brief change>. Does that scope still make sense?
If there is already a preferred approach, I am happy to follow it.如果維護者回覆了建議,就按建議做。如果沒人回覆,但 Issue 明確 open 且無人分配,你也可以提交一個小而充分測試的 PR。保持 diff 狹窄,讓維護者容易說 yes、no,或「請調整這一部分」。
Fork、建分支、測試並打開 PR
確定範圍後,優先遵循倉庫自己的貢獻文件。如果沒有指定流程,通常下面這版已經足夠:
gh repo fork OWNER/REPO --clone
cd REPO
git checkout -b fix-small-specific-thing
# 使用專案文件指定的 package manager 安裝依賴。
<install command>
# 做解決 Issue 的最小修改。
# 打開 PR 前執行相關檢查。
<test command>
git status
git add <changed files>
git commit -m "fix: update small specific thing"
git push -u origin fix-small-specific-thing
gh pr create --fill更完整的命令級流程可以參考 Contributor guide。
什麼樣的 PR 適合維護者 review
適合 review 的 PR 會說明改了什麼、怎麼測試,以及 reviewer 在看 diff 前需要知道的事項。你不需要寫長文,但需要提供足夠脈絡,避免 reviewer 只能從程式碼裡反推意圖。
## What changed
- Updated <area> so <behavior/result>.
- Kept the change limited to <scope>.
## How I tested
- Ran <command>.
- Manually checked <page, flow, or example>.
## Notes
- This addresses <issue link>.
- I am new to this repository, so feedback on the preferred style is welcome.PR 打開後繼續關注維護者評論。用小的後續 commit 回應回饋,除非專案要求,否則避免 force push,並讓討論始終圍繞合併這個具體 Issue。
準備選擇下一次貢獻時,回到 issues 或瀏覽 repositories,重複同樣流程:先選擇活躍、可理解、可 review 的工作,再開始寫程式。