誤解を恐れずに言えば、Gitとは一つの連想配列ストレージシステムです。 かっこよく言うと Key Value Storeです。 Gitがやっていることの本質は、あなたのコンテンツを圧縮してDBに保存し、あなたの要求に応じてDBから取り出して解凍する、ただそれだけです。 具体的には KVSでのsetにあたる命令がgit add,git commit KVSでのgetにあたる命令がgit checkout です。 そしてデータベースとは.git/object/ ディレクトリ配下にあるファイル群のことです。 さて今回はgit checkoutコマンドを使わずに低レイヤーなコマンドだけを使って同じことを実現してみましょう。 準備 新規レポジトリを作成して、"hello world"と書かれたファイルをコミットします。 git init dqneo echo hello world > hello.