昨日のVimでの凡ミス に引き続き、GitHubへpushしようとした時にエラーが出る凡ミス。
fatal: remote error
GitHubにある自分のレポジトリを取ってきて編集してpushしようとした時、
$ git push
fatal: remote error:
You can't push to git://github.com/rcmdnk/brewall.git
Use https://github.com/rcmdnk/brewall.git
こんな感じのエラーが。
やりたいことは、ssh([email protected]:rcmdnk/brewall.git)でやりとりすることなんですが、 httpsを使え、と言われています。
エラーをよく見れば分かる通り、どうやらcloneするときにsshではなくて、 gitプロトコル(git://github.com/rcmdnk/sentaku.git)を使って取ってきた様です。
$ git remote -v
origin git://github.com/rcmdnk/brewall.git (fetch)
origin git://github.com/rcmdnk/brewall.git (push)
とremote -v
するとやはりgitプロトコルになってます。
GitHubはgitプロトコルによるfetchは可能ですがpushは許可されて無い様で、
取ってこれるだけ取ってこれてpush出来ない除隊になります。
ので、単にレポジトリを取得し直すか、 すでに変更があってそのまま続けたいときは
$ git push
fatal: remote error:
You can't push to git://github.com/rcmdnk/brewall.git
Use https://github.com/rcmdnk/brewall.git
$ git remote set-url origin [email protected]:rcmdnk/brewall.git
$ git remote -v
origin [email protected]:rcmdnk/brewall.git (fetch)
origin [email protected]:rcmdnk/brewall.git (push)
$ git push
Everything up-to-date
$
と、remote set-url
1
を使ってoriginのURLを変更してしまえばOK。
なんで起きるか
多分、直前にGNU screenをインストールしていて、 これをGitで取るのに、
$ git clone git://git.savannah.gnu.org/screen.git
とgitプロトコルを使うので2
コマンド履歴からgit clone
を探してきて適当に書き換えて使いまわそうとして、
screen用のコマンドからスタートしてプロトコルをそのまま放置したからかな、と。
なんにしろこれも結構何回も突き当たって毎回軽く悩んでたので、 いい加減、という意味でメモ書き。
-
remote rm
などを使って、$ git remote rm origin $ git remote add origin [email protected]:rcmdnk/brewall.git $ git branch --set-upstream-to remotes/origin/master
としても同じような事になります。 ↩