= History!
Apostolos rootApostolos@swarmlab.io
// Metadata:
:description: Git instructions
:keywords: git
ifndef::env-browser[]
:data-uri:
endif::[]
:images-cdn: http://localhost:3080/images
:toc: right
:toc-title: Table of contents
:toclevels: 4
:source-highlighter: highlight
:no-header-footer:
:nofooter:
:last-update-label!:
:icons: font
:sectnums: 
:url_mongodb: https://en.wikipedia.org/wiki/MongoDB

:hardbreaks:

{empty} +
{empty} 

:!hardbreaks:

== Viewing the Commit History

After you have created several commits, or if you have cloned a repository with an existing commit history, you’ll probably want to look back to see what has happened. 

=== git log

The most basic and powerful tool to do this is the *git log* command.

[source,bash]
----
git log
----

By default, with no arguments, git log lists the commits made in that repository in reverse chronological order; that is, the most recent commits show up first. 


A huge number and variety of options to the git log command are available to show you exactly what you’re looking for. Here, we’ll show you some of the most popular.


=== git log -p

One of the more helpful options is -p or --patch, which shows the difference (the patch output) introduced in each commit. 

You can also limit the number of log entries displayed, such as using -2 to show only the last two entries.


[source,bash]
----
git log -p -2
----


This option displays the same information but with a diff directly following each entry. This is very helpful for code review or to quickly browse what happened during a series of commits that a collaborator has added. 

=== git log -stat

You can also use a series of summarizing options with git log. For example, if you want to see some abbreviated stats for each commit, you can use the --stat option:

[source,bash]
----
git log --stat
----

The --stat option prints below each commit entry a list of modified files, how many files were changed, and how many lines in those files were added and removed. It also puts a summary of the information at the end.

=== git log --pretty

Another really useful option is --pretty. This option changes the log output to formats other than the default. 


[source,bash]
----
git log --pretty=oneline
----

The most interesting option value is format, which allows you to specify your own log output format. This is especially useful when you’re generating output for machine parsing — because you specify the format explicitly, you know it won’t change with updates to Git:

[source,bash]
----
git log --pretty=format:"%h - %an, %ar : %s"
git log --pretty=format:"%h %s" --graph
----


 "Pro Git book" by Scott Chacon and Ben Straub , used under CC BY-NC-SA 3.0 / Desaturated from original


