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 にわかりやすい解説をしている人がいるので、興味のある方はリンク先もご覧になってみてください。