For some projects, it's useful to walk the first parent history, looking at each merge commit as a normal commit introducing all of the changes no its side branch. E.g.: git log --first-parent -m -Sfoo -p might show you the topic or pull request that introduced code "foo". But I quite often forget to add "-m", and get confused that it doesn't return any results. This series just makes --first-parent imply -m. That doesn't change any output by itself, but does mean that diff options like "-p", "-S", etc, behave sensibly. [1/3]: log: drop "--cc implies -m" logic [2/3]: revision: add "--ignore-merges" option to counteract "-m" [3/3]: log: enable "-m" automatically with "--first-parent" Documentation/rev-list-options.txt | 1 + builtin/log.c | 7 +- revision.c | 10 ++- revision.h | 2 +- t/t4013-diff-various.sh | 1 + ...g_--ignore-merges_-p_--first-parent_master | 78 +++++++++++++++++++ t/t4013/diff.log_-p_--first-parent_master | 22 ++++++ 7 files changed, 113 insertions(+), 8 deletions(-) create mode 100644 t/t4013/diff.log_--ignore-merges_-p_--first-parent_master -Peff