Git で最初のコミットも含むすべての差分を取得する方法

Git で最初のコミットも含む差分をすべて取得する方法についてです。

Git の最初のコミットの内容は git show で確認できますが、それを diff として出力したい場合があります。 また、最初のコミットも含めて一連のコミットの変更内容を確認したくなる場合もあります。

そんな場合にはハッシュ値 4b825dc642cb6eb9a060e54bf8d69288fbee4904 で示されるポイントとの差分を取るとよいようです。

例をあげます。

最初のコミットを diff として取得する:

$ git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904..[最初のコミットのハッシュ値]

最初のコミットも含んだ HEAD までのすべての変更を diff として取得する:

$ git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904..HEAD

この謎の値 4b825dc... は空文字列に対するハッシュ値らしく、次のコマンド等で確認することができます。

$ git hash-object -t tree /dev/null
4b825dc642cb6eb9a060e54bf8d69288fbee4904

Git がハッシュ関数として sha1 を使うかぎりは、この値が最初の状態を指す形になるとのことです。

Stack Overflow にわかりやすい解説をしている人がいるので、興味のある方はリンク先のページも見てみてください。