aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/git-log.txt
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2020-08-17 17:02:49 -0700
committerJunio C Hamano <gitster@pobox.com>2020-08-17 17:02:49 -0700
commiteca8c62a50e033ce6a4f4e065bb507ca3d98e75c (patch)
treef36173d168e17cd1ac0ce95daa3c7351db14260e /Documentation/git-log.txt
parente6ec620d8b2d576908889476eb7da716d2e4bda2 (diff)
parent5fbb4bc1910f76b344fcb88df2544701b6030435 (diff)
downloadgit-eca8c62a50e033ce6a4f4e065bb507ca3d98e75c.tar.gz
Merge branch 'jk/log-fp-implies-m'
"git log --first-parent -p" showed patches only for single-parent commits on the first-parent chain; the "--first-parent" option has been made to imply "-m". Use "--no-diff-merges" to restore the previous behaviour to omit patches for merge commits. * jk/log-fp-implies-m: doc/git-log: clarify handling of merge commit diffs doc/git-log: move "-t" into diff-options list doc/git-log: drop "-r" diff option doc/git-log: move "Diff Formatting" from rev-list-options log: enable "-m" automatically with "--first-parent" revision: add "--no-diff-merges" option to counteract "-m" log: drop "--cc implies -m" logic
Diffstat (limited to 'Documentation/git-log.txt')
-rw-r--r--Documentation/git-log.txt43
1 files changed, 41 insertions, 2 deletions
diff --git a/Documentation/git-log.txt b/Documentation/git-log.txt
index 3fd26d5212..27fa0ea26d 100644
--- a/Documentation/git-log.txt
+++ b/Documentation/git-log.txt
@@ -114,8 +114,47 @@ include::rev-list-options.txt[]
include::pretty-formats.txt[]
-COMMON DIFF OPTIONS
--------------------
+DIFF FORMATTING
+---------------
+
+By default, `git log` does not generate any diff output. The options
+below can be used to show the changes made by each commit.
+
+Note that unless one of `-c`, `--cc`, or `-m` is given, merge commits
+will never show a diff, even if a diff format like `--patch` is
+selected, nor will they match search options like `-S`. The exception is
+when `--first-parent` is in use, in which merges are treated like normal
+single-parent commits (this can be overridden by providing a
+combined-diff option or with `--no-diff-merges`).
+
+-c::
+ With this option, diff output for a merge commit
+ shows the differences from each of the parents to the merge result
+ simultaneously instead of showing pairwise diff between a parent
+ and the result one at a time. Furthermore, it lists only files
+ which were modified from all parents.
+
+--cc::
+ This flag implies the `-c` option and further compresses the
+ patch output by omitting uninteresting hunks whose contents in
+ the parents have only two variants and the merge result picks
+ one of them without modification.
+
+--combined-all-paths::
+ This flag causes combined diffs (used for merge commits) to
+ list the name of the file from all parents. It thus only has
+ effect when -c or --cc are specified, and is likely only
+ useful if filename changes are detected (i.e. when either
+ rename or copy detection have been requested).
+
+-m::
+--diff-merges::
+ This flag makes the merge commits show the full diff like
+ regular commits; for each merge parent, a separate log entry
+ and diff is generated. An exception is that only diff against
+ the first parent is shown when `--first-parent` option is given;
+ in that case, the output represents the changes the merge
+ brought _into_ the then-current branch.
:git-log: 1
include::diff-options.txt[]