【Git】warning: remote HEAD refers to nonexistent refと表示されたら
git cloneした時、こんなエラーが出て怒られました。
$ git clone ssh://xxx@yyyy:zzz/home/repos/temp/repos.git
Cloning into 'repos'...
remote: Counting objects: 9244, done.
remote: Compressing objects: 100% (6956/6956), done.
remote: Total 9244 (delta 2093), reused 8880 (delta 1872)
Receiving objects: 100% (9244/9244), 134.45 MiB | 4.23 MiB/s, done.
Resolving deltas: 100% (2093/2093), done.
warning: remote HEAD refers to nonexistent ref, unable to checkout.
初めて遭遇したエラーだったので、解決までの道のりをメモしておきます。
warning: remote HEAD refers to nonexistent ref エラーの解消方法
※リモートリポジトリの載っているサーバ側で作業するのでSSH接続をしている前提です
とりあえずリポジトリのディレクトリまで移動します。
[test@test ~]$ cd home/xxx/repos.git/
HEADというファイルがあるので中身を確認してみる。
[test@test repos.git]$ ls
HEAD branches config description hooks info objects refs
[test@test repos.git]$ cat HEAD
ref: refs/heads/master
ここで、refs/heads配下に"master"とある点に注目。
ではそのrefs/heads配下を見ると、
[test@test repos.git]$ ls refs/heads/
dev_master
dev_masterという名前のブランチだけしかありません。先ほどHEADが参照していたのは ref: refs/heads/master でした。
これが読んで字のごとく "HEAD refers to nonexistent ref(存在しないrefを参照してますよ)" のエラー、の正体ということでした。
refs/heads/master を、実際に存在する refs/heads/dev-master に修正してやれば良さそうです。以下、dev_masterの部分は適宜環境に合わせて変えてください。
[test@test repos.git]$ git symbolic-ref HEAD refs/heads/dev_master
[test@test repos.git]$
これで、
[test@test repos.git]$ cat HEAD
ref: refs/heads/dev_master
master から dev_master へ変わっています。大丈夫そうですね。
この状態でもう一度git cloneをしてみると無事怒られることなく成功しました。