バージョン管理とは
バージョン管理とはファイルの変更履歴の管理のことだ。
特に複数人でアプリケーション開発をする場合、機能ごとに作業を分割して、それを各個人が進めていくことになるだろう。そして最終的に各作業をつなぎ合わせて1つのアプリケーションになるのだが、バージョン管理はこの過程に不可欠な仕組みだ。
ファイルの変更履歴=作業履歴の単位が、どこでどのようにアプリケーションに組み込まれていくのか、時系列で確認できれば便利だ。さらに作業に誤りがあった場合、遡って該当箇所を取り消すこともできる。
それを提供するのがバージョン管理システムであり、自分はその中の1つであるGitを利用している。
作業環境
今回の作業は、以下の環境を前提として行っている。
- gitがインストールされている。(自分はHomebrewで管理している。)
- GitHubに登録済みである。
- GitHubはssh接続されている。
ローカルリポジトリの作成
まず、自分のPC内でファイルの変更履歴の保管場所を作成しなければならない。その場所をローカルリポジトリと言う。
initコマンド
最初にアプリケーションのディレクトリへ移動する。
$ cd larabbs
initコマンドでアプリケーション内に.gitというローカルリポジトリ用のディレクトリが作成され、初期化される。空の箱を作るイメージだ。このコマンドは一度実行してしまえば、再度行う必要はない。
$ git init
Initialized empty Git repository in /Users/[ユーザー名]/workspace/larabbs/.git/
addコマンド
次に、addコマンドでローカルリポジトリに変更履歴を保存したいファイルを指定する。なお、Aオプションを指定すると、現在のディレクトリ以下全てのファイルがその対象となる。
$ git add -A
commitコマンド
最後に、commitコマンドでaddコマンド実行時に指定したファイルの変更履歴がローカルリポジトリに登録される。mオプションの後ろには、メッセージを登録する必要がある。
今後、commitコマンドを行うごとに差分(以前のcommitからの変更履歴)が登録される。
$ git commit -m "first commit"
[master (root-commit) 8b94e0d] first commit
 98 files changed, 7539 insertions(+)
 create mode 100644 .env.example
 create mode 100644 .gitattributes
 create mode 100644 .gitignore
 create mode 100644 app/Article.php
# 以下省略
statusコマンド
statusコマンドで、現在のcommitの状況が確認できる。全てのファイルがcommitされていれば、以下のメッセージが表示される。
$ git status
On branch master
nothing to commit, working tree clean
リモートリポジトリの作成・登録
自分は、GitHubという超メジャーなサービスを利用している。ここにリポジトリ(リモートリポジトリ)を作成することにより、他人とアプリケーションの構成に必要な情報を共有することができる。
リモートリポジトリの作成
New repositoryで新しいリモートリポジトリを作成する。以下の項目を入力・選択すれば問題ない。
- 
Repository nameにアプリ名を入力する。
- 
Publicを選択する。
- 
Initialize this repository with a READMEはチェックしない。
公開方法は無料枠のPublicなので、自分のコードは誰でも見られる状態になることは了承しておく。
さらに、環境変数など他人に見られては困るファイルがあれば、あらかじめ.gitignoreを作成し、その中に該当のファイル名を記述しておくこと。(Laravelはデフォルトで作成されていた。)そうすれば、リモートリポジトリに該当ファイルの履歴(内容)が送られることはない。
リモートリポジトリのアドレス登録
作成したリモートリポジトリに移動し、先ほどローカルリポジトリにcommitした内容をリモートリポジトリへ送る(pushする)準備をする。
送付先であるリモートリポジトリのアドレスは、Clone or downloadで確認が可能だ。自分の場合はGitHubとssh接続しているため、gitから始まるアドレスを指定する。
まず、remote addコマンドで送付先のアドレスを登録する。以降のコマンド入力も、全てアプリケーションのディレクトリで行う。
$ cd larabbs
$ git remote add origin git@github.com:[ユーザー名]/larabbs.git
上記のコマンドで、originの名前で送付先アドレスであるgit@github.com:[ユーザー名]/larabbs.gitが登録された。
これで、pushする度にアドレスを入力する手間が省ける。
pushコマンド
pushコマンドで、ローカルリポジトリのcommit内容をリモートリポジトリへ送る。
$ git push origin master
Counting objects: 132, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (115/115), done.
Writing objects: 100% (132/132), 173.17 KiB | 1.53 MiB/s, done.
Total 132 (delta 17), reused 0 (delta 0)
remote: Resolving deltas: 100% (17/17), done.
To github.com:[ユーザー名]/larabbs.git
 * [new branch]      master -> master
これで、GitHubの該当リポジトリを選択すると変更履歴(ファイル内容)が表示されるはずだ。
参考記事
今回お世話になった記事・サイト様を紹介する。
とにかく簡潔で分かりやすい。
【Git】オレならこう説明する!Git初心者への用語説明
こちらは詳しく図解されている。SourceTreeというソフトが利用されているので、作業過程が視覚的に理解しやすい。
【連載Git入門目次】ほんとは簡単?SourceTreeでGitを始めよう!
サルでもわかるGit入門〜バージョン管理を使いこなそう〜
今回はここまで。