-----------
Shows the commit logs.
-The command takes options applicable to the 'git-rev-list'
+The command takes options applicable to the 'git rev-list'
command to control what is shown and how, and options applicable to
-the 'git-diff-*' commands to control how the changes
+the 'git diff-*' commands to control how the changes
each commit introduces are shown.
and <until>, see "SPECIFYING REVISIONS" section in
linkgit:git-rev-parse[1].
---decorate::
- Print out the ref names of any commits that are shown.
+--no-decorate::
+--decorate[=short|full|no]::
+ Print out the ref names of any commits that are shown. If 'short' is
+ specified, the ref name prefixes 'refs/heads/', 'refs/tags/' and
+ 'refs/remotes/' will not be printed. If 'full' is specified, the
+ full ref name (including prefix) will be printed. The default option
+ is 'short'.
+
+--source::
+ Print out the ref name given on the command line by which each
+ commit was reached.
--full-diff::
Without this flag, "git log -p <path>..." shows commits that
those commits that occurred before the file was given its
present name.
+git log --branches --not --remotes=origin::
+
+ Shows all commits that are in any of local branches but not in
+ any of remote tracking branches for 'origin' (what you have that
+ origin doesn't).
+
+git log master --not --remotes=*/master::
+
+ Shows all commits that are in local master but not in any remote
+ repository master branches.
+
+git log -p -m --first-parent::
+
+ Shows the history including change diffs, but only from the
+ "main branch" perspective, skipping commits that come from merged
+ branches, and showing full diffs of changes introduced by the merges.
+ This makes sense only when following a strict policy of merging all
+ topic branches when staying on a single integration branch.
+
+
Discussion
----------