読者です 読者をやめる 読者になる 読者になる

TMD45'β'LOG!!!

Life is Beta-ful.

ローカル(Windows, cygwin)からGithubのリポジトリにpushするメモ

keyword: Git, Github, Cygwin

 

Github はちょっと前に登録してあったんだけど、とくに使い道もないので放置してました。
最近、某高専クラスタのひとたちをフォローするようになって、ふと自分も公開リポジトリが欲しくなったので作ることにしたんだけど、またハマったのでメモ。

Githubリポジトリを作成する

これは特に問題ない。Githubヘルプにある通り、自分のダッシュボードから「New Repository」日本語なら「新しいリポジトリ」ボタンを押して、必要な項目を入力するだけ。
空っぽのリポジトリを作ると、リポジトリのトップページに次に何をすればいいか表示してくれる。

http://img.skitch.com/20100527-r6h2yp7m8tuxdfhppepjdsetfb.png:image:w400
超親切。(´;ω;`)ブワッ

ローカル(Windows)にリポジトリを作成する

ローカルの Windows 環境にリポジトリを作成して、それを Github に作ったリポジトリに push しようという。
そのために、まずは Windows 上でリポジトリを作成する。やることは、リポジトリのトップに表示された“次にやること”をそのまま。

自分の環境は Cygwin を利用しています。

Cygwin の $HOME/work/tmd45.github.com/ を Gitリポジトリにします。

$ mkdir $HOME/work/tmd45.github.com
$ cd $HOME/work/tmd45.github.com
$ git init
$ echo "This is my first GitHub." > README
$ git add README
$ git commit -m 'first commit'
$ git remote add origin git@github.com:tmd45/tmd45.github.com.git
    // 「tmd45/tmd45.github.com」は Github に作ったリポジトリの名前

ここまではすんなりOK.しかし最後で

$ git push origin master
The authenticity of host 'github.com (65.74.177.129)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,65.74.177.129' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

(; ゚д゚)<fatal…

これは Github との SSH 接続(パスワードなし接続)がうまくいってないようです。
参考:「git push origin masterがPermission denied で上手くいかない」git/github - TOBY SOFT wiki

というわけで、パスワードなしの SSH 接続ができるように準備します。

鍵の作成と登録

以下を参考に公開鍵と秘密鍵を生成して、公開鍵を Github へ、秘密鍵をローカルへ登録します*1
@IT:sshでパスワードなしにログインするには
Help.GitHub - Generating SSH keys (Win/msysgit)


まずローカルの Cygwin で鍵を作成します。

$ ssh-keygen -t rsa -C "foo@hoge.com"    // Githubに登録したメールアドレス
Generating public/private rsa key pair.
Enter file in which to save the key (/home/.ssh/id_rsa):    ← なにも入力せずに[Enter]
Enter passphrase (empty for no passphrase):    ← 好きなパスワードを入力
Enter same passphrase again:        ← 確認のためにもう一度入力
Your identification has been saved in /home/.ssh/id_rsa.
Your public key has been saved in /home/.ssh/id_rsa.pub.
The key fingerprint is:
e8:ae:60:8f:38:c2:98:1d:6d:84:60:8c:9e:dd:47:81 foo@hoge.com

$HOME/.ssh/ 配下に「id_rsa秘密鍵)」と「id_rsa.pub(公開鍵)」が作成されます。


作成された公開鍵のファイルをテキストエディタ(またはviとか)で開いて、中に記述されている文字列を 改行を含まずに一行で コピーして、Github の「SSH公開鍵」に登録します。
登録の仕方はここにあるとおり、自分の「アカウントの設定」ページの「SSH公開鍵」から登録します。


次にまたローカル(Cygwin)に戻って、秘密鍵のほうをローカルPCに登録します。

$ eval `ssh-agent`    // ssh-agent を起動
Agent pid 6356
$ ssh-add $HOME/.ssh/id_rsa
Enter passphrase for /home/.ssh/id_rsa:    ← 鍵を作成したときのパスワードを入力
Identity added: /home/.ssh/id_rsa (/home/.ssh/id_rsa)

これで準備オーケー!!!('A`)ヤットデスヨ


ローカルに作成したリポジトリに戻って、失敗したコマンドをもう一度叩きます。

$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 227 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:tmd45/tmd45.github.com.git
 * [new branch]      master -> master

できたー!∩*´∀`)∩ワーイ


忘れずに ssh-agent を終了します。(忘れたらどうなるんだろう…?)

$ eval `ssh-agent -k`
Agent pid 6356 killed

2回目以降の push

ローカルのリポジトリに変更を行って、2回目以降に Github へ push するときは、もっとシンプルに出来るようになります。

$ cd $HOME/work/tmd45.github.com
$ vi README    // なんか変更する
$ git add README
$ git commit -m "second commit"
$ git push origin master
Enter passphrase for key '/home/ytamada/.ssh/id_rsa':    ← パスワードを入力
Counting objects: 5, done.
Writing objects: 100% (3/3), 272 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:tmd45/tmd45.github.com.git
   1e43476..a94b6fb  master -> master


はい、かんたん(*´∀`)♪






Github のページからリポジトリを確認してみると、ちゃんと push されて、コミット履歴とかが確認できます。
やったね!以上でローカル(Windows, cygwin)から Githubリポジトリに push は完了です。


しかし自分が実際に Github でごにょごにょすることはあるのかなー…?あはは。

*1:あらかじめ公開鍵を Github へ登録してあったのにも関わらず、先程のエラーが出た人(私とか)は、秘密鍵の方をローカルに登録する作業が必要です。

▲ ページトップへ移動