0
在該分支中給定基本分支master
和子目錄A
,如何列出與master
的差異包含A
內容變化的所有分支?如何找出哪些Git分支影響給定的子目錄?
我的用例:我正在做一個subtree split在有很多分支的活動倉庫上,我也需要遷移所有受影響的分支。我想避免必須手動檢查每個分支的更改或聯繫所有分支機構的所有者。
在該分支中給定基本分支master
和子目錄A
,如何列出與master
的差異包含A
內容變化的所有分支?如何找出哪些Git分支影響給定的子目錄?
我的用例:我正在做一個subtree split在有很多分支的活動倉庫上,我也需要遷移所有受影響的分支。我想避免必須手動檢查每個分支的更改或聯繫所有分支機構的所有者。
我結束了腳本這一點是:
#!/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/
用斜線以避免實際上不是目錄的前綴匹配)。
外層循環遍歷所有尚未合併到基本分支的分支。然後內循環遍歷每個已經從基分支修改的文件。當文件的前綴匹配時,分支名稱被髮送到輸出。