在该分支中给定基本分支master
和子目录A
,如何列出与master
的差异包含A
内容变化的所有分支?
我的用例:我在具有大量分支的活动存储库上执行subtree split,我还需要迁移所有受影响的分支。我想避免手动检查每个分支机构的变更或联系所有分支机构所有者。
答案 0 :(得分:0)
我最终将其编写为:
#!/bin/bash
BASE_BRANCH=$1
DIR=$2
while read -r branch; do
while read -r file; do
if [ ${file:0:${#DIR}} == "$DIR" ] ; then
echo "$branch"
break
fi
done < <(git --no-pager diff --name-only $BASE_BRANCH...$branch)
done < <(git branch -a --no-merged $BASE_BRANCH | cut -c 3-)
这需要两个参数,基本分支(在我的示例中为master
)和要检查的子目录(在我的示例中,我为A/
提供斜杠以避免前缀匹配'实际上是一个目录)。
外部循环遍历所有尚未合并到基本分支的分支。然后内部循环遍历每个已从基本分支修改的文件。当文件的前缀匹配时,分支名称将被发送到输出。