バージョン管理とは
バージョン管理とはファイルの変更履歴の管理
のことだ。
特に複数人でアプリケーション開発をする場合、機能ごとに作業を分割して、それを各個人が進めていくことになるだろう。そして最終的に各作業をつなぎ合わせて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入門〜バージョン管理を使いこなそう〜
今回はここまで。