維護者工作流程#
本頁適用於維護者 — 我們這些將自己或他人的變更合併到上游儲存庫的人。
身為維護者,您應該完全掌握開發工作流程中的基本知識。
將您的儲存庫連結到上游儲存庫中的說明新增了一個遠端,該遠端具有上游儲存庫的唯讀存取權。身為維護者,您擁有讀寫存取權。
最好為您的上游遠端使用一個可怕的名稱,以提醒您它是一個讀寫遠端
git remote add upstream-rw git@github.com:scikit-image/scikit-image.git
git fetch upstream-rw
整合變更#
假設您有一些變更需要進入主幹 (trunk) (upstream-rw/main
)。
這些變更在您目前所在的分支中。例如,您正在查看某人的變更,如下所示
git remote add someone https://github.com/someone/scikit-image.git
git fetch someone
git branch cool-feature --track someone/cool-feature
git checkout cool-feature
現在您位於具有要合併到上游的變更的分支上。本節的其餘部分假設您位於此分支上。
少數提交#
如果只有少數提交,請考慮重新設定基底到上游
# Fetch upstream changes
git fetch upstream-rw
# rebase
git rebase upstream-rw/main
請記住,如果您執行重新設定基底並推送它,則必須手動關閉任何 github pull requests,因為 github 將無法檢測到變更已合併。
一系列長提交#
如果有一系列較長的相關提交,請考慮改用合併
git fetch upstream-rw
git merge --no-ff upstream-rw/main
合併將被 github 檢測到,並且應該會自動關閉任何相關的 pull requests。
請注意上面的 --no-ff
。這會強制 git 進行合併提交,而不是進行快速轉發,以便這組提交從主幹分支然後通過合併重新加入主歷史記錄,而不是看起來像是直接在主幹之上進行的。
檢查歷史記錄#
現在,無論是哪種情況,您都應該檢查歷史記錄是否合理,並且您擁有正確的提交
git log --oneline --graph
git log -p upstream-rw/main..
上面的第一行僅以緊湊的方式顯示歷史記錄,並帶有歷史記錄圖的文字表示。第二行顯示提交日誌,不包括從主幹 (upstream-rw/main
) 可以到達的提交,並包括從目前 HEAD 可以到達的提交 (以結尾的 ..
暗示)。因此,它顯示了與主幹相比,此分支獨有的提交。-p
選項以修補程式形式顯示這些提交的差異。
推送到主幹#
git push upstream-rw my-new-feature:main
這會將此儲存庫中的 my-new-feature
分支推送到 upstream-rw
儲存庫中的 main
分支。