git commit --allow-emptyで空のコミットを作る
git commit -m "空のコミット" --allow-empty
この「空」という言葉は紛らわしいので要注意です。「空の(empty)」といっても、本当にコミットオブジェクトの中身が空なわけではありません。
(本当に空だったらauthorやコミット日時などの付随情報を保持できないですよね?)
そうではなくて、単に「前回のコミットからの差分がない」という意味です。
空コミットの中身を見てみる
ではこの空コミットの実体はどうなっているのでしょうか?git cat-file -pで中身をのぞくことができます。
$ git cat-file -p <コミットハッシュ値>
tree 6b6f3e35d68009dda6a764a6b9ebf40387102d93
parent f47f6f62bda4b7c0e12bdd4151a02937978ac85b
author DQNEO <dqneoo@***.com> 1379315418 +0900
committer DQNEO <dqneoo@***.com> 1379315418 +0900
空のコミット
ご覧のように、空どころかちゃんとtreeオブジェクトや親コミットオブジェクトやauthor情報を保持しています。ではその親コミットの中身も見てみましょう。
$ git cat-file -p f47f6
tree 6b6f3e35d68009dda6a764a6b9ebf40387102d93
author DQNEO <dqneoo@***.com> 1379315013 +0900
committer DQNEO <dqneoo@***.com> 1379315013 +0900
テストコミットです。
treeのハッシュ値に注目。親コミットと子コミット(空コミット)で、同じtreeを共有していますね。
treeというのは、いわばコンテンツ群のスナップショットのようなものです。
tree値が同じであることによって、前回からの差分が何もないことがわかります。
カテゴリ:
Git