Using Git, show all commits that are in one branch, but not the other(s)
I have an old branch, which I would like to delete. However, before doing so, I want to check that all commits made to this branch were at some point merged into some other branch. Thus, I'd like to see all commits made to my current branch which have not been applied to any other branch [or, if this is not possible without some scripting, how does one see all commits in one branch which have not been applied to another given branch?].
Solution 1:
To see a list of which commits are on one branch but not another, use git log:
git log --no-merges oldbranch ^newbranch
...that is, show commit logs for all commits on oldbranch that are not on newbranch. You can list multiple branches to include and exclude, e.g.
git log --no-merges oldbranch1 oldbranch2 ^newbranch1 ^newbranch2
Note: on Windows command prompt (not Powershell) ^
is an escape key, so it needs to be escaped with another ^
:
git log --no-merges oldbranch ^^newbranch
Solution 2:
You probably just want
git branch --contains branch-to-delete
This will list all branches which contain the commits from "branch-to-delete". If it reports more than just "branch-to-delete", the branch has been merged.
Your alternatives are really just rev-list syntax things. e.g. git log one-branch..another-branch
shows everything that one-branch
needs to have everything another-branch
has.
You may also be interested in git show-branch
as a way to see what's where.