git-rev-list man page on OpenBSD

Man page or keyword search:  
man Server   11362 pages
apropos Keyword Search (all sections)
Output format
OpenBSD logo
[printable version]



GIT-REV-LIST(1)					  GIT-REV-LIST(1)

NAME
       git-rev-list - Lists commit objects in reverse chronological order

SYNOPSIS
       git rev-list [ --max-count=<number> ]
		    [ --skip=<number> ]
		    [ --max-age=<timestamp> ]
		    [ --min-age=<timestamp> ]
		    [ --sparse ]
		    [ --merges ]
		    [ --no-merges ]
		    [ --first-parent ]
		    [ --remove-empty ]
		    [ --full-history ]
		    [ --not ]
		    [ --all ]
		    [ --branches[=<pattern>] ]
		    [ --tags[=<pattern>] ]
		    [ --remotes[=<pattern>] ]
		    [ --glob=<glob-pattern> ]
		    [ --stdin ]
		    [ --quiet ]
		    [ --topo-order ]
		    [ --parents ]
		    [ --timestamp ]
		    [ --left-right ]
		    [ --cherry-pick ]
		    [ --encoding[=<encoding>] ]
		    [ --(author|committer|grep)=<pattern> ]
		    [ --regexp-ignore-case | -i ]
		    [ --extended-regexp | -E ]
		    [ --fixed-strings | -F ]
		    [ --date=(local|relative|default|iso|rfc|short) ]
		    [ [--objects | --objects-edge] [ --unpacked ] ]
		    [ --pretty | --header ]
		    [ --bisect ]
		    [ --bisect-vars ]
		    [ --bisect-all ]
		    [ --merge ]
		    [ --reverse ]
		    [ --walk-reflogs ]
		    [ --no-walk ] [ --do-walk ]
		    <commit>... [ -- <paths>... ]

DESCRIPTION
       List  commits that are reachable by following the parent links from the
       given commit(s), but exclude commits that are reachable from the one(s)
       given with a ^ in front of them. The output is given in reverse chrono-
       logical order by default.

       You can think of this as a set operation. Commits given on the  command
       line  form  a  set  of commits that are reachable from any of them, and

								1

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

       then commits reachable from any of the ones given with ^ in  front  are
       subtracted  from	 that set. The remaining commits are what comes out in
       the command’s output. Various other options and paths  parameters
       can be used to further limit the result.

       Thus, the following command:

       .ft C
	       $ git rev-list foo bar ^baz
       .ft

       means  "list  all  the commits which are reachable from foo or bar, but
       not from baz".

       A special notation "<commit1>..<commit2>" can be used as	 a  short-hand
       for "^<commit1> <commit2>". For example, either of the following may be
       used interchangeably:

       .ft C
	       $ git rev-list origin..HEAD
	       $ git rev-list HEAD ^origin
       .ft

       Another special notation is "<commit1>...<commit2>" which is useful for
       merges.	The  resulting	set  of	 commits  is  the symmetric difference
       between the two operands. The following two commands are equivalent:

       .ft C
	       $ git rev-list A B --not $(git merge-base --all A B)
	       $ git rev-list A...B
       .ft

       rev-list is a very essential git command, since it provides the ability
       to build and traverse commit ancestry graphs. For this reason, it has a
       lot of different options that enables it to be used by commands as dif-
       ferent as git bisect and git repack.

								2

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

OPTIONS
   Commit Formatting
       Using  these options, git-rev-list(1) will act similar to the more spe-
       cialized family of  commit  log	tools:	git-log(1),  git-show(1),  and
       git-whatchanged(1)

       --pretty[=<format>], --format=<format>
	      Pretty-print  the contents of the commit logs in a given format,
	      where <format> can be  one  of  oneline,	short,	medium,	 full,
	      fuller, email, raw and format:<string>. See the "PRETTY FORMATS"
	      section for some additional details for each format. When	 omit-
	      ted, the format defaults to medium.

	      Note:  you  can specify the default pretty format in the reposi-
	      tory configuration (see git-config(1)).

       --abbrev-commit
	      Instead of showing the full 40-byte  hexadecimal	commit	object
	      name,  show  only a partial prefix. Non default number of digits
	      can be specified with "--abbrev=<n>" (which also	modifies  diff
	      output, if it is displayed).

	      This  should  make  "--pretty=oneline" a whole lot more readable
	      for people using 80-column terminals.

       --oneline
	      This is a shorthand for "--pretty=oneline --abbrev-commit"  used
	      together.

       --encoding[=<encoding>]
	      The  commit objects record the encoding used for the log message
	      in their encoding header; this option can be used	 to  tell  the
	      command  to  re-code the commit log message in the encoding pre-
	      ferred by the user. For non plumbing commands this  defaults  to
	      UTF-8.

       --no-notes, --show-notes[=<ref>]
	      Show the notes (see git-notes(1)) that annotate the commit, when
	      showing the commit log message. This is the default for git log,
	      git show and git whatchanged commands when there is no --pretty,
	      --format nor --oneline option is given on the command line.

	      With an optional argument, add this ref to the  list  of	notes.
	      The ref is taken to be in refs/notes/ if it is not qualified.

       --[no-]standard-notes
	      Enable  or  disable  populating  the  notes  ref	list  from the
	      core.notesRef and notes.displayRef variables  (or	 corresponding

								3

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

	      environment overrides). Enabled by default. See git-config(1).

       --relative-date
	      Synonym for --date=relative.

       --date=(relative|local|default|iso|rfc|short|raw)
	      Only takes effect for dates shown in human-readable format, such
	      as when  using  "--pretty".  log.date  config  variable  sets  a
	      default value for log command’s --date option.

	      --date=relative  shows  dates relative to the current time, e.g.
	      "2 hours ago".

	      --date=local shows timestamps in user’s local timezone.

	      --date=iso (or --date=iso8601) shows timestamps in ISO 8601 for-
	      mat.

	      --date=rfc (or --date=rfc2822) shows timestamps in RFC 2822 for-
	      mat, often found in E-mail messages.

	      --date=short shows only date but not time, in YYYY-MM-DD format.

	      --date=raw  shows	 the date in the internal raw git format %s %z
	      format.

	      --date=default shows timestamps in the original timezone (either
	      committer’s or author’s).

       --header
	      Print  the  contents of the commit in raw-format; each record is
	      separated with a NUL character.

       --parents
	      Print also the parents of the commit (in the form	 "commit  par-
	      ent..."). Also enables parent rewriting, see History Simplifica-
	      tion below.

       --children
	      Print also the children of  the  commit  (in  the	 form  "commit
	      child..."). Also enables parent rewriting, see History Simplifi-
	      cation below.

       --timestamp
	      Print the raw commit timestamp.

								4

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

       --left-right
	      Mark which side of a symmetric diff a commit is reachable	 from.
	      Commits  from  the  left side are prefixed with < and those from
	      the right with >. If combined with --boundary, those commits are
	      prefixed with -.

	      For example, if you have this topology:

	      .ft C
			   y---b---b  branch B
			  / \ /
			 /   .
			/   / \
		       o---x---a---a  branch A
	      .ft

	      you would get an output like this:

	      .ft C
		      $ git rev-list --left-right --boundary --pretty=oneline A...B

		      >bbbbbbb... 3rd on b
		      >bbbbbbb... 2nd on b
		      <aaaaaaa... 3rd on a
		      <aaaaaaa... 2nd on a
		      -yyyyyyy... 1st on b
		      -xxxxxxx... 1st on a
	      .ft

       --graph
	      Draw a text-based graphical representation of the commit history
	      on the left hand side of the output. This may cause extra	 lines
	      to be printed in between commits, in order for the graph history
	      to be drawn properly.

	      This enables parent rewriting, see History Simplification below.

	      This  implies  the  --topo-order	option	by  default,  but  the
	      --date-order option may also be specified.

       --count
	      Print a number stating how many commits would have been  listed,
	      and   suppress   all  other  output.  When  used	together  with
	      --left-right, instead  print  the	 counts	 for  left  and	 right

								5

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

	      commits, separated by a tab.

   Commit Limiting
       Besides	specifying  a range of commits that should be listed using the
       special notations explained in the description, additional commit  lim-
       iting may be applied.

       -n number, --max-count=<number>
	      Limit the number of commits output.

       --skip=<number>
	      Skip number commits before starting to show the commit output.

       --since=<date>, --after=<date>
	      Show commits more recent than a specific date.

       --until=<date>, --before=<date>
	      Show commits older than a specific date.

       --max-age=<timestamp>, --min-age=<timestamp>
	      Limit the commits output to specified time range.

       --author=<pattern>, --committer=<pattern>
	      Limit  the  commits  output to ones with author/committer header
	      lines that match the specified pattern (regular expression).

       --grep=<pattern>
	      Limit the commits output to ones with log message	 that  matches
	      the specified pattern (regular expression).

       --all-match
	      Limit  the  commits  output to ones that match all given --grep,
	      --author and --committer instead of ones	that  match  at	 least
	      one.

       -i, --regexp-ignore-case
	      Match  the  regexp  limiting  patterns without regard to letters
	      case.

       -E, --extended-regexp
	      Consider the limiting patterns to be  extended  regular  expres-
	      sions instead of the default basic regular expressions.

								6

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

       -F, --fixed-strings
	      Consider	the limiting patterns to be fixed strings (don’t
	      interpret pattern as a regular expression).

       --remove-empty
	      Stop when a given path disappears from the tree.

       --merges
	      Print only merge commits.

       --no-merges
	      Do not print commits with more than one parent.

       --first-parent
	      Follow only the first parent commit upon seeing a merge  commit.
	      This  option  can give a better overview when viewing the evolu-
	      tion of a particular topic branch, because merges into  a	 topic
	      branch  tend to be only about adjusting to updated upstream from
	      time to time, and this option allows you to ignore the  individ-
	      ual commits brought in to your history by such a merge.

       --not  Reverses	the  meaning of the ^ prefix (or lack thereof) for all
	      following revision specifiers, up to the next --not.

       --all  Pretend as if all the refs in refs/ are listed  on  the  command
	      line as <commit>.

       --branches[=<pattern>]
	      Pretend  as if all the refs in refs/heads are listed on the com-
	      mand line as <commit>. If <pattern> is given, limit branches  to
	      ones matching given shell glob. If pattern lacks ?, , or [, / at
	      the end is implied.

       --tags[=<pattern>]
	      Pretend as if all the refs in refs/tags are listed on  the  com-
	      mand line as <commit>. If <pattern> is given, limit tags to ones
	      matching given shell glob. If pattern lacks ?, , or [, / at  the
	      end is implied.

       --remotes[=<pattern>]
	      Pretend  as  if  all  the refs in refs/remotes are listed on the
	      command line as <commit>. If <pattern> is	 given,	 limit	remote
	      tracking	branches to ones matching given shell glob. If pattern
	      lacks ?, , or [, / at the end is implied.

								7

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

       --glob=<glob-pattern>
	      Pretend as if all the refs matching  shell  glob	<glob-pattern>
	      are  listed  on  the command line as <commit>. Leading refs/, is
	      automatically prepended if missing. If pattern lacks ?, , or  [,
	      / at the end is implied.

       --stdin
	      In  addition  to	the  <commit> listed on the command line, read
	      them from the standard input. If a -- separator  is  seen,  stop
	      reading commits and start reading paths to limit the result.

       --quiet
	      Don’t print anything to standard output. This form is pri-
	      marily meant to allow the caller to test the exit status to  see
	      if  a range of objects is fully connected (or not). It is faster
	      than redirecting stdout to /dev/null as the output does not have
	      to be formatted.

       --cherry-pick
	      Omit  any commit that introduces the same change as another com-
	      mit on the "other side" when the set of commits are limited with
	      symmetric difference.

	      For  example,  if you have two branches, A and B, a usual way to
	      list all commits on only one side of them is with	 --left-right,
	      like  the	 example  above	 in the description of that option. It
	      however shows the commits that were cherry-picked from the other
	      branch (for example, "3rd on b" may be cherry-picked from branch
	      A). With this option, such pairs of commits  are	excluded  from
	      the output.

       -g, --walk-reflogs
	      Instead  of  walking  the	 commit	 ancestry  chain,  walk reflog
	      entries from the most recent one to older ones. When this option
	      is used you cannot specify commits to exclude (that is, ^commit,
	      commit1..commit2,	 nor  commit1...commit2	 notations  cannot  be
	      used).

	      With  --pretty  format other than oneline (for obvious reasons),
	      this causes the output to have two extra	lines  of  information
	      taken from the reflog. By default, commit@{Nth} notation is used
	      in the output. When the starting commit  is  specified  as  com-
	      mit@{now}, output also uses commit@{timestamp} notation instead.
	      Under --pretty=oneline, the commit message is prefixed with this
	      information  on  the  same  line. This option cannot be combined
	      with --reverse. See also git-reflog(1).

       --merge
	      After a failed merge,  show  refs	 that  touch  files  having  a

								8

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

	      conflict and don’t exist on all heads to merge.

       --boundary
	      Output  uninteresting commits at the boundary, which are usually
	      not shown.

   History Simplification
       Sometimes you are only interested in parts of the history, for  example
       the  commits  modifying a particular <path>. But there are two parts of
       History Simplification, one part is selecting the commits and the other
       is  how	to do it, as there are various strategies to simplify the his-
       tory.

       The following options select the commits to be shown:

       <paths>
	      Commits modifying the given <paths> are selected.

       --simplify-by-decoration
	      Commits that are referred by some branch or tag are selected.

	      Note that extra commits can be shown to give a  meaningful  his-
	      tory.

	      The  following options affect the way the simplification is per-
	      formed:

       Default mode
	      Simplifies the history to the simplest  history  explaining  the
	      final  state  of	the tree. Simplest because it prunes some side
	      branches if the end result is the same  (i.e.  merging  branches
	      with the same content)

       --full-history
	      As the default mode but does not prune some history.

       --dense
	      Only  the	 selected commits are shown, plus some to have a mean-
	      ingful history.

       --sparse
	      All commits in the simplified history are shown.

								9

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

       --simplify-merges
	      Additional option to  --full-history  to	remove	some  needless
	      merges from the resulting history, as there are no selected com-
	      mits contributing to this merge.

       --ancestry-path
	      When given a range of commits to display (e.g.  commit1..commit2
	      or  commit2  ^commit1), only display commits that exist directly
	      on the ancestry chain between the commit1 and commit2, i.e. com-
	      mits that are both descendants of commit1, and ancestors of com-
	      mit2.

	      A more detailed explanation follows.

	      Suppose you specified foo as the <paths>. We shall call  commits
	      that  modify  foo	 !TREESAME,  and the rest TREESAME. (In a diff
	      filtered for foo, they look different and equal,	respectively.)

	      In  the following, we will always refer to the same example his-
	      tory to illustrate the differences between  simplification  set-
	      tings.  We  assume that you are filtering for a file foo in this
	      commit graph:

	      .ft C
			.-A---M---N---O---P
		       /     /	 /   /	 /
		      I	    B	C   D	E
		       \   /   /   /   /
			`-------------'
	      .ft

	      The horizontal line of history A--P is taken  to	be  the	 first
	      parent of each merge. The commits are:

       o    I is the initial commit, in which foo exists with contents "asdf",
	  and a file quux exists with contents	"quux".	 Initial  commits  are
	  compared to an empty tree, so I is !TREESAME.

       o  In A, foo contains just "foo".

       o    B  contains the same change as A. Its merge M is trivial and hence
	  TREESAME to all parents.

       o   C does not change foo, but its merge N changes it to	 "foobar",  so

							       10

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

	  it is not TREESAME to any parent.

       o    D sets foo to "baz". Its merge O combines the strings from N and D
	  to "foobarbaz"; i.e., it is not TREESAME to any parent.

       o   E changes quux to "xyzzy", and its merge P combines the strings  to
	  "quux	 xyzzy".  Despite  appearing interesting, P is TREESAME to all
	  parents.

       rev-list walks backwards through history, including or  excluding  com-
       mits  based  on	whether	 --full-history	 and/or	 parent rewriting (via
       --parents or --children) are used. The following	 settings  are	avail-
       able.

       Default mode
	      Commits  are  included  if  they	are not TREESAME to any parent
	      (though this can be changed, see --sparse below). If the	commit
	      was a merge, and it was TREESAME to one parent, follow only that
	      parent. (Even if there are several TREESAME parents, follow only
	      one of them.) Otherwise, follow all parents.

	      This results in:

	      .ft C
			.-A---N---O
		       /     /	 /
		      I---------D
	      .ft

	      Note  how the rule to only follow the TREESAME parent, if one is
	      available, removed B from consideration entirely. C was  consid-
	      ered  via	 N,  but  is TREESAME. Root commits are compared to an
	      empty tree, so I is !TREESAME.

	      Parent/child relations are only visible with --parents, but that
	      does not affect the commits selected in default mode, so we have
	      shown the parent lines.

       --full-history without parent rewriting
	      This mode differs from the default in one point:	always	follow
	      all  parents  of a merge, even if it is TREESAME to one of them.
	      Even if more than one side of the merge  has  commits  that  are
	      included,	 this  does not imply that the merge itself is! In the
	      example, we get

							       11

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

	      .ft C
		      I	 A  B  N  D  O
	      .ft

	      P and M were excluded because they are TREESAME to a parent.  E,
	      C and B were all walked, but only B was !TREESAME, so the others
	      do not appear.

	      Note that without parent rewriting, it is not really possible to
	      talk  about  the parent/child relationships between the commits,
	      so we show them disconnected.

       --full-history with parent rewriting
	      Ordinary commits are only included if they are !TREESAME (though
	      this can be changed, see --sparse below).

	      Merges  are  always  included.  However,	their  parent  list is
	      rewritten: Along each parent, prune away commits	that  are  not
	      included themselves. This results in

	      .ft C
			.-A---M---N---O---P
		       /     /	 /   /	 /
		      I	    B	/   D	/
		       \   /   /   /   /
			`-------------'
	      .ft

	      Compare  to  --full-history without rewriting above. Note that E
	      was pruned away because it is TREESAME, but the parent list of P
	      was  rewritten  to contain E's parent I. The same happened for C
	      and N. Note also that P was included despite being TREESAME.

	      In addition to  the  above  settings,  you  can  change  whether
	      TREESAME affects inclusion:

       --dense
	      Commits that are walked are included if they are not TREESAME to
	      any parent.

       --sparse
	      All commits that are walked are included.

	      Note that without --full-history, this still simplifies  merges:
	      if  one  of the parents is TREESAME, we follow only that one, so

							       12

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

	      the other sides of the merge are never walked.

       --simplify-merges
	      First, build a history graph in the same way that --full-history
	      with parent rewriting does (see above).

	      Then  simplify  each commit C to its replacement C' in the final
	      history according to the following rules:

	      o	 Set C' to C.

	      o	 Replace each parent P of C' with its  simplification  P'.  In
		 the  process,	drop  parents that are ancestors of other par-
		 ents, and remove duplicates.

	      o	 If after this parent rewriting, C' is a root or merge	commit
		 (has zero or >1 parents), a boundary commit, or !TREESAME, it
		 remains. Otherwise, it is replaced with its only parent.

	      The effect of  this  is  best  shown  by	way  of	 comparing  to
	      --full-history with parent rewriting. The example turns into:

	      .ft C
			.-A---M---N---O
		       /     /	     /
		      I	    B	    D
		       \   /	   /
			`---------'
	      .ft

	      Note the major differences in N and P over --full-history:

	      o	   N's parent list had I removed, because it is an ancestor of
		 the  other  parent  M.	 Still,	 N  remained  because  it   is
		 !TREESAME.

	      o	   P's parent list similarly had I removed. P was then removed
		 completely, because it had one parent and is TREESAME.

	      Finally, there is a fifth simplification mode available:

							       13

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

       --ancestry-path
	      Limit the displayed commits to those directly  on	 the  ancestry
	      chain  between  the  "from" and "to" commits in the given commit
	      range. I.e. only display commits that are ancestor of  the  "to"
	      commit, and descendants of the "from" commit.

	      As an example use case, consider the following commit history:

	      .ft C
			  D---E-------F
			 /     \       \
			B---C---G---H---I---J
		       /		     \
		      A-------K---------------L--M
	      .ft

	      A regular D..M computes the set of commits that are ancestors of
	      M, but excludes the ones that are ancestors of D. This is useful
	      to see what happened to the history leading to M since D, in the
	      sense that "what does M have that	 did  not  exist  in  D".  The
	      result  in this example would be all the commits, except A and B
	      (and D itself, of course).

	      When we want to find out what commits in M are contaminated with
	      the  bug introduced by D and need fixing, however, we might want
	      to view only the subset of D..M that are actually descendants of
	      D,  i.e.	excluding  C  and K. This is exactly what the --ances-
	      try-path option does. Applied to the D..M range, it results in:

	      .ft C
			      E-------F
			       \       \
				G---H---I---J
					     \
					      L--M
	      .ft

	      The --simplify-by-decoration option allows you to view only  the
	      big  picture of the topology of the history, by omitting commits
	      that are not referenced by tags. Commits are marked as !TREESAME
	      (in   other  words,  kept	 after	history	 simplification	 rules
	      described above) if (1) they are referenced by tags, or (2) they
	      change  the contents of the paths given on the command line. All
	      other commits are marked as TREESAME (subject to	be  simplified
	      away).

							       14

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

   Bisection Helpers
       --bisect
	      Limit  output  to the one commit object which is roughly halfway
	      between included and excluded commits. Note that the bad	bisec-
	      tion ref refs/bisect/bad is added to the included commits (if it
	      exists) and the good bisection refs refs/bisect/good-* are added
	      to  the  excluded commits (if they exist). Thus, supposing there
	      are no refs in refs/bisect/, if

	      .ft C
		      $ git rev-list --bisect foo ^bar ^baz
	      .ft

	      outputs midpoint, the output of the two commands

	      .ft C
		      $ git rev-list foo ^midpoint
		      $ git rev-list midpoint ^bar ^baz
	      .ft

	      would be of roughly the same length. Finding  the	 change	 which
	      introduces  a  regression	 is  thus  reduced to a binary search:
	      repeatedly generate and test  new	 'midpoint’s  until  the
	      commit chain is of length one.

       --bisect-vars
	      This  calculates	the  same  as  --bisect,  except  that refs in
	      refs/bisect/ are not used, and except  that  this	 outputs  text
	      ready  to be eval’ed by the shell. These lines will assign
	      the name of the midpoint revision to  the	 variable  bisect_rev,
	      and the expected number of commits to be tested after bisect_rev
	      is tested to bisect_nr, the expected number  of  commits	to  be
	      tested  if  bisect_rev  turns out to be good to bisect_good, the
	      expected number of commits to be tested if bisect_rev turns  out
	      to  be  bad  to  bisect_bad,  and	 the  number of commits we are
	      bisecting right now to bisect_all.

       --bisect-all
	      This outputs all the commit objects  between  the	 included  and
	      excluded	commits, ordered by their distance to the included and
	      excluded commits. Refs in refs/bisect/ are not  used.  The  far-
	      thest  from  them	 is  displayed	first.	(This  is the only one

							       15

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

	      displayed by --bisect.)

	      This is useful because it makes it easy to choose a good	commit
	      to  test	when  you  want to avoid to test some of them for some
	      reason (they may not compile for example).

	      This option can be used along with --bisect-vars, in this	 case,
	      after all the sorted commit objects, there will be the same text
	      as if --bisect-vars had been used alone.

   Commit Ordering
       By default, the commits are shown in reverse chronological order.

       --topo-order
	      This option makes them appear in topological order (i.e. descen-
	      dant commits are shown before their parents).

       --date-order
	      This option is similar to --topo-order in the sense that no par-
	      ent comes before all of its children, but otherwise  things  are
	      still ordered in the commit timestamp order.

       --reverse
	      Output  the  commits  in	reverse order. Cannot be combined with
	      --walk-reflogs.

   Object Traversal
       These options are mostly targeted for packing of git repositories.

       --objects
	      Print the object IDs of any object referenced by the listed com-
	      mits.  --objects	foo  ^bar  thus	 means "send me all object IDs
	      which I need to download if I have the commit  object  bar,  but
	      not foo".

       --objects-edge
	      Similar to --objects, but also print the IDs of excluded commits
	      prefixed	 with	a   "-"	  character.   This   is    used    by
	      git-pack-objects(1)  to build "thin" pack, which records objects
	      in deltified form based on objects contained in  these  excluded
	      commits to reduce network traffic.

       --unpacked
	      Only useful with --objects; print the object IDs that are not in
	      packs.

							       16

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

       --no-walk
	      Only show the given revs, but do not traverse their ancestors.

       --do-walk
	      Overrides a previous --no-walk.


PRETTY FORMATS
       If the commit is a merge, and if	 the  pretty-format  is	 not  oneline,
       email  or  raw, an additional line is inserted before the Author: line.
       This line begins with "Merge: " and the sha1s of ancestral commits  are
       printed, separated by spaces. Note that the listed commits may not nec-
       essarily be the list of the direct parent commits if you	 have  limited
       your  view  of  history:	 for  example,	if  you are only interested in
       changes related to a certain directory or file.

       There are several built-in formats, and you can define additional  for-
       mats  by setting a pretty.<name> config option to either another format
       name, or a format: string, as described below (see git-config(1)). Here
       are the details of the built-in formats:

       o   oneline

	  <sha1> <title line>
	  This is designed to be as compact as possible.

       o   short

	  commit <sha1>
	  Author: <author>

	  <title line>

       o   medium

	  commit <sha1>
	  Author: <author>
	  Date:	  <author date>

	  <title line>

	  <full commit message>

       o   full

	  commit <sha1>
	  Author: <author>
	  Commit: <committer>

	  <title line>

							       17

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

	  <full commit message>

       o   fuller

	  commit <sha1>
	  Author:     <author>
	  AuthorDate: <author date>
	  Commit:     <committer>
	  CommitDate: <committer date>

	  <title line>

	  <full commit message>

       o   email

	  From <sha1> <date>
	  From: <author>
	  Date: <author date>
	  Subject: [PATCH] <title line>

	  <full commit message>

       o   raw

	  The raw format shows the entire commit exactly as stored in the com-
	  mit object. Notably, the SHA1s are displayed in full, regardless  of
	  whether  --abbrev  or	 --no-abbrev are used, and parents information
	  show the true parent commits, without taking grafts nor history sim-
	  plification into account.

       o   format:<string>

	  The  format:<string>	format allows you to specify which information
	  you want to show. It works a little bit like printf format, with the
	  notable exception that you get a newline with %n instead of \n.

	  E.g,	format:"The author of %h was %an, %ar%nThe title was >>%s<<%n"
	  would show something like this:

	  .ft C
	  The author of fe6e0ee was Junio C Hamano, 23 hours ago
	  The title was >>t4119: test autocomputing -p<n> for traditional diff input.<<
	  .ft

	  The placeholders are:

	  o   %H: commit hash

							       18

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

	  o   %h: abbreviated commit hash

	  o   %T: tree hash

	  o   %t: abbreviated tree hash

	  o   %P: parent hashes

	  o   %p: abbreviated parent hashes

	  o   %an: author name

	  o   %aN: author name (respecting .mailmap,  see  git-shortlog(1)  or
	     git-blame(1))

	  o   %ae: author email

	  o    %aE:  author email (respecting .mailmap, see git-shortlog(1) or
	     git-blame(1))

	  o   %ad: author date (format respects --date= option)

	  o   %aD: author date, RFC2822 style

	  o   %ar: author date, relative

	  o   %at: author date, UNIX timestamp

	  o   %ai: author date, ISO 8601 format

	  o   %cn: committer name

	  o   %cN: committer name (respecting .mailmap, see git-shortlog(1) or
	     git-blame(1))

	  o   %ce: committer email

	  o    %cE:  committer email (respecting .mailmap, see git-shortlog(1)
	     or git-blame(1))

	  o   %cd: committer date

	  o   %cD: committer date, RFC2822 style

	  o   %cr: committer date, relative

	  o   %ct: committer date, UNIX timestamp

	  o   %ci: committer date, ISO 8601 format

	  o   %d: ref names, like the --decorate option of git-log(1)

	  o   %e: encoding

							       19

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

	  o   %s: subject

	  o   %f: sanitized subject line, suitable for a filename

	  o   %b: body

	  o   %B: raw body (unwrapped subject and body)

	  o   %N: commit notes

	  o   %gD: reflog selector, e.g., refs/stash@\{1\}

	  o   %gd: shortened reflog selector, e.g., stash@\{1\}

	  o   %gs: reflog subject

	  o   %Cred: switch color to red

	  o   %Cgreen: switch color to green

	  o   %Cblue: switch color to blue

	  o   %Creset: reset color

	  o   %C(...): color specification,  as	 described  in	color.branch.*
	     config option

	  o   %m: left, right or boundary mark

	  o   %n: newline

	  o   %%: a raw %

	  o   %x00: print a byte from a hex code

	  o    %w([<w>[,<i1>[,<i2>]]]):	 switch	 line  wrapping,  like	the -w
	     option of git-shortlog(1).

	      Note

	      Some placeholders may depend on other options given to the revi-
	      sion  traversal engine. For example, the %g* reflog options will
	      insert an empty string unless we are traversing  reflog  entries
	      (e.g.,  by  git log -g). The %d placeholder will use the "short"
	      decoration format if --decorate was not already provided on  the
	      command line.

							       20

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

       If  you	add a {plus} (plus sign) after % of a placeholder, a line-feed
       is inserted immediately before the expansion if and only if the	place-
       holder expands to a non-empty string.

       If  you	add a - (minus sign) after % of a placeholder, line-feeds that
       immediately precede the expansion are deleted if and only if the place-
       holder expands to an empty string.

       If  you add a ` ` (space) after % of a placeholder, a space is inserted
       immediately before the expansion if and only if the placeholder expands
       to a non-empty string.

       o   tformat:

	  The  tformat: format works exactly like format:, except that it pro-
	  vides "terminator" semantics instead of  "separator"	semantics.  In
	  other	 words, each commit has the message terminator character (usu-
	  ally a newline) appended, rather than	 a  separator  placed  between
	  entries.  This  means	 that  the final entry of a single-line format
	  will be properly terminated with a new line, just as	the  "oneline"
	  format does. For example:

	  .ft C
	  $ git log -2 --pretty=format:%h 4da45bef \
	    | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
	  4da45be
	  7134973 -- NO NEWLINE

	  $ git log -2 --pretty=tformat:%h 4da45bef \
	    | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
	  4da45be
	  7134973
	  .ft

	  In  addition,	 any  unrecognized string that has a % in it is inter-
	  preted as if it has tformat: in front of it. For example, these  two
	  are equivalent:

	  .ft C
	  $ git log -2 --pretty=tformat:%h 4da45bef
	  $ git log -2 --pretty=%h 4da45bef
	  .ft

							       21

GIT-REV-LIST(1)					  GIT-REV-LIST(1)

AUTHOR
       Written by Linus Torvalds <torvalds@osdl.org: mailto:torvalds@osdl.org>

DOCUMENTATION
       Documentation by David Greaves, Junio C Hamano, Jonas Fonseca  and  the
       git-list <git@vger.kernel.org: mailto:git@vger.kernel.org>.

GIT
       Part of the git(1) suite

							       22

[top]

List of man pages available for OpenBSD

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net