A piece of cake

Research, hobby, and life

RstudioからGitHubへのプッシュ

# 悪戦苦闘中

よくわかっていなかったのでできたと思い込んでいました。

でも、リモートリポジトリであるGitHubには、Pushをしなければ反映されないのですね。

f:id:Shibusawa:20180124210905j:plain

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:意味が分からないので