查找Git当前已签出分支的父分支可使用什么命令?
查找Git中从指定分支迁出的所有分支的可用命令
适用不同场景的解决方案
1. 批量查询所有从指定基分支迁出的分支
这个方案最精准,会过滤掉跨其他分支迁出的分支,把<your-base-branch>替换为你的目标基分支(比如示例里的develop)执行即可:
base_branch=<your-base-branch> # 只查本地分支 for ref in $(git for-each-ref refs/heads/ --format='%(refname:short)'); do merge_base=$(git merge-base --first-parent $ref $base_branch) if git branch $base_branch --contains $merge_base > /dev/null 2>&1; then echo $ref fi done
如果要同时查远端分支,把refs/heads/改成refs/即可。
2. 快速验证当前分支的迁出源分支
你之前用的git show-branch变体可以简化优化,直接输出当前分支的上游母分支:
git show-branch | grep '!' | grep -v $(git rev-parse --abbrev-ref HEAD) | head -1 | awk -F'[][]' '{print $2}'
3. 快速筛选可安全rebase到基分支的分支
如果你不需要严格匹配初始迁出分支,只要找所有包含基分支提交、rebase不会有无关冲突的分支,你之前用的git branch --contains命令调整正则即可,比如筛选所有从develop迁出的feature前缀分支:
git branch --contains develop | grep "feature/"
4. 可视化查看分支分叉关系
如果需要直观确认分支的分叉路径,用优化后的log命令:
git log --graph --oneline --decorate --all --first-parent
该命令只会展示每个分支的主提交链,不会被合并提交打乱结构,可以直接看到所有分支的分叉来源。
注意事项
如果你的分支切出后合并过其他分支的代码,查询时在git merge-base后加--first-parent参数,限定只看当前分支的主提交链,避免被合并提交干扰结果。
内容的提问来源于stack exchange,提问作者zbigniew421
相关产品推荐
相关产品推荐

