rcmdnk's blog

Posted in Computer Tagged as git GitHub

GitHubへpushしようとした時にfatal: remote error

Fatal

昨日の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(git@github.com: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 git@github.com:rcmdnk/brewall.git
$ git remote -v
origin  git@github.com:rcmdnk/brewall.git (fetch)
origin  git@github.com:rcmdnk/brewall.git (push)
$ git push
Everything up-to-date
$

と、remote set-url1 を使ってoriginのURLを変更してしまえばOK。

なんで起きるか

多分、直前にGNU screenをインストールしていて、 これをGitで取るのに、

$ git clone git://git.savannah.gnu.org/screen.git

とgitプロトコルを使うので2 コマンド履歴からgit cloneを探してきて適当に書き換えて使いまわそうとして、 screen用のコマンドからスタートしてプロトコルをそのまま放置したからかな、と。

なんにしろこれも結構何回も突き当たって毎回軽く悩んでたので、 いい加減、という意味でメモ書き。

追記: 2014/08/24

hubを使えばこんなことも起こらなくなります。

hub: git clone時等に’git@github.com:’等を補完してくれるラッパー

追記ここまで

スポンサードリンク
  1. remote rmなどを使って、

    $ git remote rm origin
    $ git remote add origin git@github.com:rcmdnk/brewall.git
    $ git branch --set-upstream-to  remotes/origin/master
    

    としても同じような事になります。

  2. GNU Screen - Git Repositories [Savannah]

Related Posts Plugin for WordPress, Blogger...