如何获取所有对指定文件引入变更的Git分支列表?
获取对指定文件有未合并变更的Git分支列表
要筛选出所有对目标文件有变更、且领先于main分支的分支(假设已合并分支已删除),可以用以下脚本实现:
for branch in $(git branch --no-merged main | sed 's/^[* ]//'); do if git diff main..$branch --name-only | grep -q "your-target-file.txt"; then echo $branch fi done
命令解释
git branch --no-merged main:列出所有尚未合并到main的分支,这些就是符合“领先于main”要求的分支sed 's/^[* ]//':清理分支列表的格式,去掉开头的星号(当前分支标记)和空格git diff main..$branch --name-only:对比main分支与当前遍历的分支,只输出有差异的文件名grep -q "your-target-file.txt":静默检查差异文件中是否包含目标文件,存在则输出对应的分支名
注意事项
- 将
your-target-file.txt替换为你要检查的实际文件路径(相对或绝对路径均可) - 如果需要排除当前分支,可在循环内添加判断:
if [ "$branch" != "$(git rev-parse --abbrev-ref HEAD)" ]; then # 原判断逻辑 fi
内容的提问来源于stack exchange,提问作者jakob-r
相关产品推荐
相关产品推荐

