Dependabot 分支名稱怎麼改?用 pull-request-branch-name 對齊 CI
Dependabot 建立的分支若和團隊既有命名規則不合,問題通常不在更新內容,而在後續工具如何辨認它。GitHub 在 2026 年 8 月 4 日新增 pull-request-branch-name 設定,讓你調整前綴、分隔符號、大小寫、最大長度,或用 template 重新組合分支名稱。
這個設定適合處理三種情境:CI 只允許特定分隔符號、monorepo 需要更容易辨識 package 路徑,以及分支長度受到外部系統限制。它不會改變 Dependabot 更新策略,也不應和 cooldown 或安全更新規則混成一個問題。
pull-request-branch-name 可以控制什麼
官方文件目前列出六個選項:
| 選項 | 用途 | 預設或限制 |
|---|---|---|
separator | 替換 package manager 與依賴名稱之間的 / | /,可用 -、_ 或 / |
prefix | 設定分支開頭 | dependabot,最多 50 個字元 |
max-length | 設定分支最大長度 | 預設 100,範圍 20–244 |
word-separator | 替換內容中的底線 | 預設不處理 |
branch-name-case | 將分支內容轉成大小寫 | lowercase 或 uppercase |
template | 以 placeholder 自訂整個格式 | 最多 200 個字元 |
Dependabot 原本常見的格式是 dependabot/PACKAGE-MANAGER/DEPENDENCY。先確認你的 CI、branch protection 與 release 工具依賴的是哪一段,再決定要改單一選項,還是直接使用 template。
先用基本選項配合現有 CI
在 .github/dependabot.yml 的特定 update 設定下加入 pull-request-branch-name:
version: 2
updates: - package-ecosystem: npm directory: "/" schedule: interval: weekly pull-request-branch-name: prefix: "deps" separator: "-" word-separator: "-" branch-name-case: lowercase max-length: 64例如原本的 dependabot/npm_and_yarn/Lodash-4.17.21,套用前綴、分隔符號與大小寫後,會往 deps-npm-and-yarn-lodash-4.17.21 的方向改變。不要只看單一套件的結果;monorepo、grouped update 與不同 package manager 會產生不同的內容。
如果 CI 使用 dependabot/** 這類 glob,改掉 separator 或 prefix 後,要同步檢查 workflow 的 branches、branches-ignore、if 條件與部署腳本。先找出依賴舊格式的地方:
rg -n \ 'dependabot[/_-]|branches(-ignore)?:|head_ref|base_ref' \ .github scripts Makefile 2>/dev/null這個搜尋只是定位,不能取代實際建立一個 Dependabot PR 後的驗證。完成設定後,應確認 branch filter、required checks 與自動合併規則都仍然命中。
需要固定格式時再用 template
如果團隊需要把 package manager、依賴名稱與版本放在固定位置,可以使用 placeholders:
pull-request-branch-name: template: "deps/{package_manager}/{dependency}-{version}" separator: "-" branch-name-case: lowercase max-length: 80可用 placeholder 會依 update strategy 而變化,常見的有 {package_manager}、{directory}、{target_branch}、{dependency}、{version}、{group_name} 與 {name}。不要把所有 placeholder 當成任何策略都能用;例如 multi-ecosystem group 沒有單一 package manager,使用 {package_manager} 會造成驗證錯誤。
另外,template 產出的結果仍必須是合法 Git reference。空白、~、^、:、?、*、[、反斜線,以及 .. 或 @{ 等形式都不能出現在分支名稱中。設定檔可以先通過 YAML 解析,卻在 Dependabot 產生 PR 時才暴露格式問題,所以要保留一個實際 PR 的驗收步驟。
長度限制不是單純刪字串
max-length 的範圍是 20 到 244,超過限制時 Dependabot 會截短分支名稱並附加 hash suffix 以維持唯一性。這代表你不能假設「前 40 個字元相同,就一定是同一條分支」,也不能把截短後的尾端當成完整版本號。
Grouped update 與 multi-ecosystem group 還可能自動加入 10 字元 digest 來確保唯一性,這段不是使用者可以控制的。若外部系統有嚴格長度限制,應把 prefix、template 與 max-length 一起測試,而不是只把最大長度調到最小。
上線前的驗證順序
- 先在一個測試 repository 套用設定,保留舊版與新版分支範例。
- 用一個單獨更新和一個 grouped update 檢查產出的格式;若使用 multi-ecosystem group,也要另外測試。
- 檢查 Actions 的 branch filter、PR label、required check 與自動合併條件。
- 確認分支長度、Git reference 合法性與截短後的唯一性。
- 最後才把同一份設定推廣到其他 repository。
如果你同時在調整 Dependabot 的更新節奏,先把命名變更和 Dependabot cooldown 的安全邊界 分成不同 PR。這樣未來 CI 失效時,才知道是分支名稱改變,還是更新排程與安全修補策略造成的。
Dependabot 分支命名的重點不是做出最漂亮的字串,而是讓 CI、審查與自動化都能穩定辨認它。先以基本選項降低變更面,只有在命名規則真的需要時才使用 template,並用實際 PR 驗證完整流程。
常見問題
Q: pull-request-branch-name 會改變 Dependabot 更新的套件或版本嗎?
A: 不會。這組設定只控制 Dependabot 為 pull request 產生的分支名稱,包括前綴、分隔符號、大小寫、長度與 template。更新策略、排程、grouping、cooldown 與安全更新仍由其他 dependabot.yml 設定決定。若更新行為本身有問題,應分開檢查對應的 ecosystem 與 schedule。
Q: Dependabot 分支太長時,可以只把 max-length 設成 20 嗎?
A: 可以設定的最低值是 20,但過短會讓 prefix、package manager、依賴與版本很快被截短。Dependabot 會附加 hash suffix 來維持唯一性,因此不要只看前綴判斷分支身份。先依 CI 或外部系統的實際限制選一個長度,再測試單獨與 grouped update。
Q: 所有 template placeholder 都能一起使用嗎?
A: 不能。可用 placeholder 會依 solo、grouped 或 multi-ecosystem update strategy 變化。GitHub 文件特別指出,multi-ecosystem group 沒有單一 package manager,使用 {package_manager} 會造成驗證錯誤;template 也必須產生合法 Git reference。
參考資料:
GitHub Changelog:Customize Dependabot pull request branch names
回報錯字、失效連結,或告訴我你想看的延伸主題。