git: finding which merge brough commit into the current branch -
i have number of branches, periodically merged, i.e. can have a, merged b, b c, d , d c, etc. suppose have commit x, know introduces in a, , merged c somehow (i can see when git log c). there way find out merge (which merge commit) brought commit x branch c?
usually following:
git log --oneline --ancestry-path --merges <commit-of-interest>..c the --ancestry-path argument key here: causes git show commits both descendant of <commit-of-interest> , ancestor of c. --merges option filters resulting list further show merge commits.
each of printed merges falls 1 of following categories:
- the merge brought
<commit-of-interest>branch - the merge brought different branch branch has
<commit-of-interest> - both parent branches had
<commit-of-interest>
the first category 1 you're interested in. can tell category merge in looking @ commit subject line. start @ bottom of list; oldest merges in first category.
it's technically possible write script filter out merges in second , third categories (just test see if <commit-of-interest> reachable merge's first parent), i've never found necessary.
if need more in-depth study of commit history recommend looking @ history graph:
git log --oneline --graph --color --decorate \ --ancestry-path <commit-of-interest>..c you may want toss in --boundary too, although adds noise. use gitk, unfortunately graph draws doesn't show parentage in correct order (gitk might draw edge between merge , second parent on left; git log --graph draws second parent edge on right).
Comments
Post a Comment