1350 字
7 分鐘

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將分支內容轉成大小寫lowercaseuppercase
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,改掉 separatorprefix 後,要同步檢查 workflow 的 branchesbranches-ignoreif 條件與部署腳本。先找出依賴舊格式的地方:

Terminal window
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 一起測試,而不是只把最大長度調到最小。

上線前的驗證順序#

  1. 先在一個測試 repository 套用設定,保留舊版與新版分支範例。
  2. 用一個單獨更新和一個 grouped update 檢查產出的格式;若使用 multi-ecosystem group,也要另外測試。
  3. 檢查 Actions 的 branch filter、PR label、required check 與自動合併條件。
  4. 確認分支長度、Git reference 合法性與截短後的唯一性。
  5. 最後才把同一份設定推廣到其他 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

GitHub Docs:Dependabot options reference

Dependabot 分支名稱怎麼改?用 pull-request-branch-name 對齊 CI
https://laplusda.com/posts/dependabot-pull-request-branch-names/
作者
Zero
發佈於
2026-08-06
許可協議
CC BY-NC-SA 4.0
這篇文章有幫助嗎?

回報錯字、失效連結,或告訴我你想看的延伸主題。