RstudioからGitHubへのプッシュ
# 悪戦苦闘中
よくわかっていなかったのでできたと思い込んでいました。
でも、リモートリポジトリであるGitHubには、Pushをしなければ反映されないのですね。
Push、Pullボタンがグレーアウト・・・!!!!
これまでも、いろんなソフトウェアのよくわからないところを探ってきているので、めげません。 こういうときはエラーメッセージをそのままgoogleへ。
RStudio and GitHub | R-bloggers
発見しました。
真ん中あたりにあるコマンド群を実行していきます。
まずはoriginという場所をリモートにおきます。それから次のconfigはおまじない*1。
git remote add origin 自分のリモートリポジトリアドレス git config remote.origin.url git@github.com:<name>/<repository>.git
そのあと、shellからプッシュをします。
git push -u origin master
ここで問題。shellにメッセージ。
The authenticity of host 'github.com' can't be established. RSAkey fingerprint is hogehoge. Are you sure you want to continue connecting (yes/no)?>
github.comに接続する権限がないので、RSAキーほげほげで接続しますか?ということらしいのです。
RSAキーは公開鍵暗号というもので、安全にリモートコンピュータと通信するためのプロトコルであるssh接続に使われるそうです。
yesをしてみると
warning: permanently added 'github.com(RSA)' to the list of known hosts.
Connection closed by xxx.xx.xxx.xxx port xx
fatal: could not read from remote repositry.
please make sure you have the correct access rghts and the repository exists
ということで、はじかれました。
次の手は鍵をつくるところから
RstudioからGithubを使う - DISTRICT 37
鍵生成からやっているブログを参考にしてみます。
toolsからキー生成まで、やってみると、作られたキーが文字化けしてて読めないし登録もされません。
RStudio: Pushing to Github with ssh-authentication | R-bloggers
次はshellからRSA鍵を作ってみるブログを参考にします。R-bloggersなので期待しています。
ssh-keygen -t rsa -C "your.mail@example.com"
きちんと動いて
enter file in which to save the key ():
enter passphrase
ここは空白のまま飛ばしていくと、キーが発行されて、Rstudioのメニューにあるtoolsのglobal optionから、Gitのところを選んでView public keyをみると、きちんと生成されていました。
これを、GitHubのマイページ、設定からSSHキーとして登録。
ssh -T git@github.com
で登録されているか見ると
Hi your_username! You’ve successfully authenticated, but GitHub does not provide shell access.
という風に出て、認証されていることがわかりました。 ブログと同じだとほっとしますね。
ここまで来るのは長かったので、そのあとのコマンド二つはもうすでにやっていました。
で、最初の目的はプッシュすること
git pull -u origin master git push -u origin master
を実行します。pullで-uコマンドがないというお達し。 上でシェルは使えないよ!って言われてるのも気になります。
エラーメッセージは
unknown switch u
だったので、検索すると
Setting up new github repository - unknown switch `u' - Stack Overflow
に
git pull origin master
で良いとのこと。確かにpullができました。 uコマンドは旧いのでサポートされてないって書かれていましたが、すでに3年経過しているので、今は使われなくなったんでしょうか。謎です。
次はpush。これも上述をpushにかえるだけでいけるかと思ったら、
![rejected] master ->master (non-fast-forward)
そしてヘルプを見てfast-forwardsについて学べという風に言われました。
わからないのでまたググります。
fast-forwardマージから理解するgit rebase - Qiita
ローカルではブランチで作業していて、リモートとの整合性が取れない、とかなんとかいうことみたいです。
というわけで、これを参照にgit push -fコマンドを使いましたら、うまくいきました。
長い道のり
この過程で
git
git.pub
という二つのデータがRproject内に生成されましたので、とりあえずgitignoreに追加しておき、ちゃんとGitHubに履歴が残っていることを確認しました。
なんでこんなに大変だったのかわからないんですが、できたのでおっけーですね。
これ、職場のPCもセットしないといけないと思うと、キツイです。
*1:意味が分からないので