Git Historie - git log

Das Standardkommando hier: git log

Tipp

Nutzen eines einfachen Dummy-Git-Repo der ProGit-Book-Writer:

Befehl: git clone https://github.com/schacon/simplegit-progit.git

Mit git log ohne weitere Parameter werden alle Commits angezeigt, was bei größeren Projekten dann mit einem Pager geschieht und zum Beenden q erfordert.

Für die Anzeige spezieller Commits werden Parameter genutzt.

Patchinfo zu den letzten beiden Commits: git log -p -2

Erkl.: mit Parameter -p für --patch und -2 für die letzten 2 Commits)

Für weitere Informationen (Statistik): git log --stat

$ git log --stat
commit ca82a6dff817ec66f44342007202690a93763949 (HEAD -> master, origin/master, origin/HEAD)
Author: Scott Chacon <schacon@gmail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the verison number

 Rakefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gmail.com>
Date:   Sat Mar 15 16:40:33 2008 -0700

    removed unnecessary test code

 lib/simplegit.rb | 5 -----
 1 file changed, 5 deletions(-)

commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gmail.com>
Date:   Sat Mar 15 10:31:28 2008 -0700

    first commit

 README           |  6 ++++++
 Rakefile         | 23 +++++++++++++++++++++++
 lib/simplegit.rb | 25 +++++++++++++++++++++++++
 3 files changed, 54 insertions(+)

Und für etwas kompaktere Ausgaben: git log mit --oneline-Schalter

$ git log --oneline      # Abk. für --pretty=oneline --abbrev-commit
2c0fff5 (HEAD -> master, origin/master, origin/HEAD) .gitignore3 - lets just check in again for clean status und repo
8b90aae .gitignore2 - lets just check in again for clean status und repo
c15b3a6 .gitignore - lets just check in again for clean status und repo
bafdc25 lets just check in again for clean status und repo
636908f Initial commit; First Commit to .git
$ git log --pretty=oneline
2c0fff5041681d70eb909543cd4c1742fcce2f03 (HEAD -> master, origin/master, origin/HEAD) .gitignore3 - lets just check in again for clean status und repo
8b90aae1d35f35ec1782c01a9bc92e3e433f9c98 .gitignore2 - lets just check in again for clean status und repo
c15b3a67b6eaaa983aa40af793a23ab7f830cf05 .gitignore - lets just check in again for clean status und repo
bafdc25f03c5b6ca0a26d4aa4565b095461784c8 lets just check in again for clean status und repo
636908f2b795b68c4c99f978239be5e274bfea05 Initial commit; First Commit to .git

Und dann kann man noch mit dem --format= Schalter arbeiten:

$ git log --pretty=format:"%h - %an, %ar : %s"
2c0fff5 - Joe Brandes, 4 hours ago : .gitignore3 - lets just check in again for clean status und repo
8b90aae - Joe Brandes, 4 hours ago : .gitignore2 - lets just check in again for clean status und repo
c15b3a6 - Joe Brandes, 4 hours ago : .gitignore - lets just check in again for clean status und repo
bafdc25 - Joe Brandes, 4 hours ago : lets just check in again for clean status und repo
636908f - Joe Brandes, 31 hours ago : Initial commit; First Commit to .git

Hinweis

Tabelle mit Format-Parametern im Pro Git Book (PDF, Page 43, Table 1)

Wenn sich später die Commits verzweigen (siehe Branches), dann ist in Kombination noch --graph praktisch.

Weitere Varianten können zeitliche Abfragen erstellen: git log --since=2.weeks

Eine Abfrage (aus Pro Git Book zum Git-Git-Repo ;-):

$ git log --pretty="%h - %s" --author='Junio C Hamano' --since="2008-10-01" --before="2008-11-01" --no-merges -- t/
5610e3b031 - Fix testcase failure when extended attributes are in use
acd3b9eca8 - Enhance hold_lock_file_for_{update,append}() API
f5637549a7 - demonstrate breakage of detached checkout with symbolic link HEAD
d1a43f2aa4 - reset --hard/read-tree --reset -u: remove unmerged new paths
51a94af845 - Fix "checkout --track -b newbranch" on detached HEAD
b0ad11ea16 - pull: allow "git pull origin $something:$current_branch" into an unborn branch

Da lohnt dann sicherlich mal ein Blick in die Hilfe: git help log - Anm.: bisschen Zeit mitbringen ;-)