読者です 読者をやめる 読者になる 読者になる

git clone したときに出来る origin/HEAD というリモートブランチ

git clone でリポジトリを複製したときに、次のように origin/HEAD というリモートブランチが見えます。

$ git branch -r
origin/HEAD -> origin/master
origin/master

これは clone した後に作業ディレクトリにチェックアウトするブランチを示したもののようです*1。つまり↑の場合は clone 後の作業ディレクトリには master ブランチがチェックアウトされます。


サーバ上の HEAD を書き換えれば別のブランチにすることも出来ます*2。GitHub の場合はリポジトリの Admin にある「Default Branch」で変更することが出来ます。


削除したければ次のように実行します(ローカル側のシンボリックリファレンスを削除するだけでサーバの HEAD が削除されるわけでは無いです)。

$ git remote set-head origin -d

追記 2012/12/11

サーバ側の HEAD を書き換える場合は直接編集するのでは無く、次のように symbolic-ref コマンドを使うのがいいようです。

$ cd /path/to/repos/hogehoge.git # サーバの bare リポジトリに移動
$ git symbolic-ref HEAD refs/heads/develop # HEAD を develop ブランチに変更する

このように設定しておけば、このリポジトリをクローンしたときに master ではなく develop がチェックアウトされるようになります。Redmineリポジトリを連携した場合のデフォルトで表示されるブランチも同じように bare リポジトリの HEAD になるので、カレントな開発ブランチが master 以外なのであれば設定しておいた方が良いのでは無いでしょうか。

*1:version control - Why is "origin/HEAD" shown when running "git branch -r"? - Stack Overflow

*2:手動で書き換えていいものかどうかはわかりませんが・・・