neutligenの日記

初心者が商用開発に挑む姿を綴ります。僕のような初心者の方に「こんな奴もいるんかー」と思って読んでもらい、コメントまで貰えたら幸いです。

開発のわだち(4):自分の開発環境を作る【3】

「自分の開発環境を作る【3】」

目標:ゲストOSのコードをgithubでバージョン管理する

目次:
1.git(ローカルリポジトリ)の環境設定
2.githubアカウントにsshキーを追加
3.githubのリモートリポジトリにプッシュ

     

1.git(ローカルリポジトリ)の環境設定

git自体はインストール済みなのでここには書きません。
(「前回の記事」の“1.rbenv/ruby-buildをインストール”参照)

まずはgitconfigの設定。自分は以下のように設定しました。(この内容は/home/vagrant/.gitconfigに反映される。)

$ git config --global user.name "自分の名前"
$ git config --global user.email "自分のメールアドレス"
$ git config --global push.default matching
# 今後のgitリリースに前方互換するためのオプション
$ git config --global alias.co checkout
# "checkout"コマンドを"co"で済ませるエイリアス
$ git config --global color.ui true
# レスポンスがカラフルになって見やすくなる



次に、アプリのディレクトリの中でリポジトリを作成しgitの監視下に置きます。

$ git init
Initialized empty Git repository in /"アプリのディレクトリ"/.git/
# リポジトリを初期化(ディレクトリ内に.gitディレクトリが作られる)
$ git add .
# ディレクトリ内の全フォルダ及びファイルをindexにステージングする
$ git commit -m "バージョンをコミットする時のコメント"
# -mはcommitと同時にコメントを付記するオプション。ローカルリポジトリにコミットする。



なお、gitの概念理解については以下を参考に勉強させて頂きました。

Pro GIt
->少なくともChapter4までは読んだ方がいい。
【CoEdo.rb】GitとGitHubはじめの一歩
->ローカルリポジトリ、リモートリポジトリの両方を含めた概念、及びハンズオン
Git初心者に捧ぐ!Gitの「これなんで?」を解説します。
->ローカルリポジトリの概念を説明
はじめてgitをつかったのでコマンドを復習します
->diff,HEADコマンドの考え方
ドットインストール git入門 (全22回)
->ここはマジで最高
よく使う git diff コマンド
->diffの話、参考リンク先にビジュアルな説明あり


2.githubアカウントにsshキーを設定

githubにアカウントを作成する流れは割愛します。
githubのリモートリポジトリにプッシュするためにはsshキーを設定します。
基本的にはオフィシャルに従うので、ここの通りにやるに尽きます。 ページトップでMacWindowsのどっちかしか選択できず、こちとらCentOSなので不安になりましたが、Macで行きました。

$ ls -al ~/.ssh
# 既存の公開鍵のチェック
$ ssh-keygen -t rsa -b 4096 -C "自分のメールアドレス"  
# 公開鍵と秘密鍵のペアを発行
Enter file in which to save the key (/home/vagrant/.ssh/id_rsa):   
# 鍵の保存場所を指定(コロンの後には鍵の名前をつけられる。空でもOK)パスにvagrantが入っていて自分の名前がなくても不安になるな。
Enter passphrase (empty for no passphrase): 
# パスワードを設定できる。空でもOK
Enter same passphrase again: 
# パスワードの確認
Your identification has been saved in /home/vagrant/.ssh/id_rsa.
...略
$ eval "$(ssh-agent -s)"
# ssh-agentを起動して
$ ssh-add ~/.ssh/id_rsa
# 追加する
$ pbcopy < ~/.ssh/id_rsa.pub
# pbcopyコマンドが使えなければ、直接ファイルを見に行ってコピーしちゃいましょう。自分はそうしました。

コピーしたパスワードをこのページの指示通りにsshキー登録するとgithubへのキー登録は完了です。

補足
Cyberduckで.sshなどの隠しフォルダ/ファイルを表示するには、“環境設定”=>“ブラウザ”タブ=>“'.'で始まるファイルを表示”にチェックを入れて、Cyberduckを再起動すると表示されます。


3.githubのリモートリポジトリにプッシュ

githubにリモートリポジトリを作成する画面は以下の通りです。

f:id:neutligen:20160315220608p:plain
画像はrails tutorialからの抜粋です。
"Repository name(必須)"と"Description(任意)"を設定して"Public"を選択します。READMEや.gitignoreはrails newで生成しているので"Initialize this repository with a README"のあたりはそのままでOKです。
"create repository"でリモートリポジトリが作成されます。

アカウント画面に戻るとRepository nameのリモートリポジトリが作成されているので、クリックします。 以下四つの選択肢が表示されます。

1.Quick setup — if you’ve done this kind of thing before
2.…or create a new repository on the command line
3.…or push an existing repository from the command line
4.…or import code from another repository

今回はすでにローカルリポジトリがあり、リモートにプッシュしたいので3番目を選択し、そこに書いてあるコマンドを実行します。

$ git remote add origin git@github.com:"アカウント名"/"作成したリモートリポジトリ名".git
# ローカルリポジトリの直下の/.git/configの"remote origin"にリモートリポジトリのurlを設定。
$ git push -u origin master  
# ローカルリポジトリをリモートリポジトリにプッシュ

これで、git及びgithubリポジトリの管理ができます。 よっしゃー


自分はリモートリポジトリへのプッシュにだいぶ苦しみました。。 大事なのは、キーペアの発行はgithubのオフィシャルを信じることw

それとキーペア「~/.ssh/config」やローカルリポジトリのconfig「"リポジトリのディレクトリ"/.git/config」を細かく確認して誤った設定が残っていないかチェックするのも大事だと思います。

自分が成功した設定例を以下に。 ~/.ssh/config

Host github.com
 User git
 port 22
 Hostname ssh.github.com
 IdentityFile ~/.ssh/id_rsa
 TCPKeepAlive yes
 IdentitiesOnly yes

"リポジトリのディレクトリ"/.git/config

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = git@github.com:"アカウント名"/"作成したリモートリポジトリ名".git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

復習してたら~/.ssh/configは生成されなかった。。。 本当は不要なファイルなのかも。。

環境

Vagrant 1.7.4

VirtualBox 5.0.14

Apache/2.4.6

その他お世話になったサイト

GitHub 初心者による GitHub 入門(1)〜 git のインストールとセットアップ・リポジトリの作成・ clone 〜
->何度もローカルリポジトリ外でプッシュしようとしてエラーをくらいました。。 Githubにport:22 で push できなかった場合の対処法
->$ ssh -T git@github.comは認証確認に超つかえます。
やっぱりssh秘密鍵にpassphraseを設定したい時
->ssh秘密鍵のpassphraseを修正・追加(no passphraseから新たにpassphraseを設定する)。
RSAとSSH公開鍵の接続設定で困ったら
->ssh-keygenは一度間違えると色々なところが書き換わっちゃうので関連ファイルの確認が必要