1. ホーム
  2. git

[解決済み] 指定したファイルへの変更を含む Git ブランチを検索する

2022-10-14 18:28:34

質問

57 のローカル ブランチがあります。そのうちの 1 つで、あるファイルに変更を加えたことは分かっていますが、どのブランチか分かりません。どのブランチが特定のファイルへの変更を含んでいるかを見つけるために実行できる何らかのコマンドはありますか?

どのように解決するのですか。

FILENAMEへの変更を含むすべての分岐を見つける(たとえ(記録されていない)分岐点の前であっても)。

FILENAME="<filename>"
git log --all --format=%H $FILENAME | while read f; do git branch --contains $f; done | sort -u

手動で検査する。

gitk --all --date-order -- $FILENAME

マスターにマージされていないFILENAMEへのすべての変更を見つけます。

git for-each-ref --format="%(refname:short)" refs/heads | grep -v master | while read br; do git cherry master $br | while read x h; do if [ "`git log -n 1 --format=%H $h -- $FILENAME`" = "$h" ]; then echo $br; fi; done; done | sort -u