WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

GitHubの使い方

      2015/06/18

ここでは、GitHubに登録してリモートリポジトリ(GitHub)とローカルリポジトリでプロジェクトを同期するまでの手順を記す。

GitHub公式ドキュメントと共に、下記のページが非常に参考になった。
github利用ガイド git備忘記録 – Stargazing && Temporary Escapism ~インプット馬鹿への道~

アカウント登録

下記URLからプランを選択して、アカウントを生成する。
https://github.com/plans

ソースコードを公開する場合は無料で利用できるが、非公開にする場合は有料プランを選択する必要がある。

Gitのセットアップ

ローカルマシンにGitをセットアップする。
下記URLのGithub公式ドキュメントと同じ手順。

http://help.github.com/mac-set-up-git/

Gitのダウンロードとインストール

下記URLからOSに合わせてパッケージもしくはソースをダウンロードし、インストールする。
http://git-scm.com/

SSHキーのセットアップ

はじめに、現存するSSHキーを確認する。

$ cd ~/.ssh

既存のSSHキーがある場合は、バックアップしておく。

$ mkdir key_backup
$ cp id_rsa* key_backup
$ rm id_rsa*

バックアップしたら新しいSSHキーを作成する。

$ ssh-keygen -t rsa -C "your_email@youremail.com"
Enter file in which to save the key (/Users/hoge/.ssh/id_rsa): <Enterを入力>
Enter passphrase (empty for no passphrase): <パスフレーズを入力>
Enter same passphrase again: <パスフレーズを再入力>

GitHubにSSHキーを登録

GitHubにアクセスし、“Account Settings” > “SSH Public Keys” > “Add another public key”とリンクをクリックしていく。

“Add another public key”をクリックすると、Keyというテキストエリアが出現するので、そこに公開鍵をコピーして貼り付ける。

$ cd ~/.ssh
$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAw5D1BdLaFHS1ZLMrWhnwWWgqirQTVYEbHupdmx2Th3iCD2bA9vg9KQQ7CZXOtASFUUgW1SKo65oAh4YbueY42xCGqkhljojdhPkMspL1yx4PY7OhWzkMvvND57ireZhLue+1AmZBEXOkAUxveSNv1xjhTaQ2WJdvbQBeMO8hodON357rhqYDyp0I0YOoXJfz2aGIr7ybR7sTj2VFyD1iD7G7pFnzS0uFc8TlYjLlPCsYiBXKGHI0hElBar/5CIjCrCdL1QO1tct4xbzBGMJwg0ZDfZOp7fhTQm/gESjHXidoEbve/pTnYqk6qpXE8BjPe0IyW3XpEExkRu4uNlbW8w== your_email@youremail.com
↑これをコピー

titleには適当にわかりやすい名前を入力しておく。

貼りつけたら”Add key”ボタンを押下する。

動作確認

GitHubとSSH接続する。パスフレーズを設定している場合は、それを入力する必要がある。

$ ssh -T git@github.com

成功したら以下のようなメッセージが出力される。

Hi Username You've successfully authenticated, but GitHub does not provide shell access.

個人情報の設定

今後、gitを利用して様々なリポジトリへコミットを行ったりすることになると思われる。
そのときに表示される名前とメールアドレスを以下のように設定する。

名前は、GitHubに登録してある名前にしておく。

$ git config --global user.name "Firstname Lastname"
$ git config --global user.email "your_email@youremail.com"

GitHubトークンの設定

GitHubにアクセスして“Account Settings” > “Account Admin.” とリンクをクリックしていく。
すると、API Token というものがあることを確認できる。

これは、いくつかのツールがSSHを利用せずにGitHubと接続ときに必要なAPIトークンであり、通常、他人に教えたりしないで秘密にしておく必要がある。

Your API token is 0123456789yourf0123456789token 〜
の “0123456789yourf0123456789token”の部分がトークンなので、これをコピーしておき下記コマンドを実行する。

$ git config --global github.user username
$ git config --global github.token 0123456789yourf0123456789token

もし今後GitHubのパスワードを変更した場合は、APIトークンも新しく生成されるので、上記コマンドでも変更を反映しておく必要がある。

ここまでで、Gitのセットアップは完了。

リポジトリの生成

続いてリポジトリを生成するが、ここでは下記URLのドキュメントに沿って行なっていく。
http://help.github.com/create-a-repo/

新規リポジトリの生成

GitHubにアクセスして”New Repository”をクリック。

Project Nameに”Hello World”、Descriptionに”My first project”を入力。リポジトリにアクセスできかには”Anyone”を選択して”Create Repository”をクリック。

はじめてのコミット

ローカルマシンでREADMEというファイルを作ってコミットしてみる。

ここではホームディレクトリ直下にworkというディレクトリを作成し、work直下にそれぞれのプロジェクトのためのディレクトリを用意して作業するようにしている。

$ cd
$ mkdir -p work/Hello-World
$ cd work/Hello-World
$ git init
$ touch README

つづいてコミットを行う。

$ git add README
$ git commit -m 'first commit'

上記コマンドでは、READMEファイルを作成したことをローカルリポジトリに反映することができる(この時点では、GitHubには反映されていない)。

また、コミットした後でファイルを編集した場合は、再度変更したファイルを”git add”してから”git commit”する必要がある。

$ echo '追記します。' >> README
$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	modified:   README
#
no changes added to commit (use "git add" and/or "git commit -a")
$ git add README
$ git commit -m 'modified README'

※”git add” した以降に同じファイルをまた編集しても、addした時点までの状態までしか反映されないので注意

また、毎回addするのが面倒な場合は、”git commit -a” といった感じで-aオプションをつけることで、管理しているファイルに変更があったファイルすべて反映させることができる。

git commit -a -m 'README追記しました'

ローカルでコミットを実行したら、リモートのリポジトリに反映させる(push)。
デフォルトではoriginというリポジトリ名をつけるらしいのでここではそれに習う。

$ git remote add origin git@github.com:username/Hello-World.git
$ git push origin master

これで、GitHubにアクセスしてHelloWorldプロジェクトを見てみると、READMEファイルが存在していてコミットの内容などを確認することができる。

逆にリモートリポジトリの変更点をローカルリポジトリに反映させる場合は、pullを用いる

$ git pull origin

 - Git ,