Find a Git branch containing changes to a given file
Solution 1:
Find all branches which contain a change to FILENAME (even if before the (non-recorded) branch point)
FILENAME="<filename>"
git log --all --format=%H $FILENAME | while read f; do git branch --contains $f; done | sort -u
Manually inspect:
gitk --all --date-order -- $FILENAME
Find all changes to FILENAME not merged to master:
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
Solution 2:
All you need is
git log --all -- path/to/file/filename
If you want to know the branch right away you can also use:
git log --all --format=%5 -- path/to/file/filename | xargs -I{} -n 1 echo {} found in && git branch --contains {}
Further, if you had any renames, you may want to include --follow
for the Git log command.