Railsチュートリアル 第1章 1.4 Gitによるバージョン管理

1.4.1 インストールとセットアップ

・gitはもともとIDEに入っている。以下の手順でセットアップを行う。
①gitをインストールしたとき、初回だけsystemセットアップと呼ばれる設定をする必要がある。

$ git config --global user.name "Your Name"
$ git config --global user.email your.email@example.com

ここで設定した名前とメールアドレスは、リポジトリ上で公開されるのでちゃんとしたのをつけよう。
②git initでリポジトリを初期化しておく。よくわからないけど。
③git add -A をし、現在のディレクトリにあるファイルをすべてgitに追加する。この段階ではまだ保存されていない。安全のためすぐにコミットはされず、ステージングという一時待機の状態になっている。ステージングされているファイルを確認するためには、git status コマンドを用いる。
④git commit を用い、ステージングされていた(保留されていた)ファイルをコミットする。このとき、-mをつけるとメッセージを指定できる。

$ git commit -m "Initialize repository"
[master (root-commit) df0a62f] Initialize repository

⑤ここまででコミットされたが、これはあくまでローカルマシン上のgitに保存されたにすぎない。共有のサーバーとかに保存するためにはpushをする必要がある。(1.4.4説で解説)

1.4.2 Gitのメリット

・Gitを使っておけば、例えば間違えて重要なファイルをrmしてしまったとしても、checkoutを使えばもとに戻せたりする。

1.4.3 Bitbucket(Github)

・ローカルに入ってるリポジトリをpushして公開/共有するためのWebサービスのこと。
・使うにはまずSSH公開鍵を作成し、Githubに登録しておく必要がある。SSHとはSecure Shellの略語で、安全な通信の規格名。パスワード方式と公開鍵方式がある。
 (qiita.com

SSH公開鍵はssh-keygenで作成し、cat id_rsa.pubで確認できる。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/ec2-user/.ssh/id_rsa.
Your public key has been saved in /home/ec2-user/.ssh/id_rsa.pub.
The key fingerprint is:~~~~
$ cat id_rsa.pub

・作った公開鍵をGithubに登録したら、 ssh -T git@github.com で接続を確認できる。
リポジトリをプッシュするためには、まずGithubをプッシュ先として登録する。

$ git remote add origin git@github.com:(ユーザー名)/(リポジトリ名).git

・次にプッシュする。

$ git push -u origin master

・Gitの優れた点は、ブランチ機能にある。枝分かれ(ブランチ)を作成し、元のファイルを変更せずに編集できる。
 ①git checkout -b (ブランチ名) でブランチを作成できる。ブランチの状態は git branch で確認できる。git checkout はブランチ間の移動コマンドでもある。

$ git checkout -b modify-README
$ git branch
  master
* modify-README

 ②編集を行い、 git statusで確認をする。その後、git commit でコミットをする。変更したファイルすべてをコミットするには -a を、メッセージをつけるには -m "メッセージ" を使う。また、新しいファイルを作成した場合は、先にgit Add をしないとそのファイルがリポジトリに追加されない。

$ git status
On branch modify-README
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.md
$ git commit -a -m "Improve the README file"
[modify-README 237aaee] Improve the README file

no changes added to commit (use "git add" and/or "git commit -a")
 ③ここまでの変更はすべてブランチ上で行われたものである。これをマスターブランチにマージする必要があり、git checkout master でマスターに移動してから git merge を用いる。

$ git checkout master
Switched to branch 'master'
$ git merge modify-README
Updating 7f43922..237aaee
Fast-forward
 README.md | 27 +++++----------------------
1 file changed, 5 insertions(+), 22 deletions(-)

④最後に、もしサブブランチが不要になれば、git branch -d で削除する。

$ git branch -d modify-README
Deleted branch modify-README (was 237aaee).

 または、git branch -D を使うと、ブランチ上の変更を全て破棄し、ブランチを消せるが、ミスしたときに使うべし。