新しいブランチを作成せずに古いバージョンを取得する方法

git checkout コマンドは通常はブランチヘッドが引数で渡されることを期待していますが、 任意のコミットを指定することもできます;例えば、 タグによって参照されるコミットをチェックアウトすることができます。

$ git checkout v2.6.17
Note: moving to "v2.6.17" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
  git checkout -b <new_branch_name>
HEAD is now at 427abfa... Linux v2.6.17

この時 HEAD はブランチの代わりにコミットの SHA-1 値を参照しており、 git branch を実行するとブランチにいないことが分かります。

$ cat .git/HEAD
427abfa28afedffadfca9dd8b067eb6d36bac53f
$ git branch
* (no branch)
  master

この状態を HEAD が "切り離されている (detached)" と言います。

この方法は、新しいブランチを作成せずに特定のバージョンを チェックアウトする手軽な方法です。 こうした後でも、後からこのバージョンに対して新しいブランチ(またはタグ)を 作成することができます。