用 git branch --contains 找到哪些分支包含某个提交

15 次浏览2 条回复

有时想确认一个修复到底进了哪些分支,不用肉眼翻 log,可以直接查提交被哪些分支包含。

环境:Git 2.25+,在仓库里执行:

git branch --contains <commit>

如果要连远端分支一起看:

git branch -a --contains <commit>

输出里的分支名就是已经包含这个提交的分支。比如 hotfix 合完以后,拿那条修复提交的 hash 查一下,就能确认 main、release/* 这些分支有没有带上。

这个命令只读历史,不会改工作区。注意远端分支信息可能不是最新的,查之前可以先按项目习惯 git fetch 一下。

这个拿来查 cherry-pick 漏没漏也挺顺手。

如果只关心远端某条线,可以再收窄一点:

git branch -r --contains <commit>

不过确实最好先 git fetch --prune 一下,不然看到的远端分支可能还是本地缓存。

还有个反向用法也挺有用:

git branch -a --no-contains <commit>

它会列出还没包含这个提交的分支。发版前想确认哪些维护分支还漏着某个修复时,比一个个看 log 省事。前提还是先更新远端引用,不然结果容易旧。