git diff <branch_hash> <other_branch_hash> -- <file_path>
-> git diff 0da94be 59ff30c > my.patch -> git apply my.patch
$ git diff HEAD^^ HEAD main.c $ # show diff between HEAD(current commit) and HEAD^^(two commits back) for main.c
A simple way to do it is: create and checkout branch tmp at branch_a (git branch tmp branch_a && git checkout tmp) git reset --soft branch_b git commit that commit must have all the diff
$ git diff 012345..abcdef