アプリ開発日誌
2016.06.13
Git(バージョン管理システム)について
こんにちは、松川です。
今日は社内のソースコード管理に使用しているGitを、SVNとの比較を交えて書いていこうと思います。
Gitって言葉はよく聞くけど一体何?
→ プログラムのソースコードなどの変更履歴を記録・追跡するためのバージョン管理システムの事。
ファイルを保存したタイミングで更新履歴がGitに保存されるので、一度編集したファイルを過去の状態に戻したり、差分を表示したりすることが可能です。
SVN(Subversion)とよく比較されるけど何が違うの?
→ 大きく違うのは、SVNは「集中型バージョン管理システム」、Gitは「分散型バージョン管理システム」という管理方式の違いです。
集中型バージョン管理システムって?
→ ファイルそのものや、変更履歴を保存する場所を「リポジトリ」と呼びますが、SVNの場合は1つのリポジトリ(中央リポジトリ)を使用します。
プロジェクトに参加するメンバーは、この中央リポジトリからソースコードを取得・編集し、編集後は中央リポジトリに反映します。
コードの管理は全て中央リポジトリだけで管理されています。
分散型バージョン管理システムって?
→ リモートリポジトリ以外にも、ローカルにリポジトリを作成する事が可能です。
リポジトリを複数個作成することができるため、「分散型」と呼ばれています。
ローカルにリポジトリを作成できる事により、開発者はリモートリポジトリを意識せずに開発を行う事ができ、テストコードも試しやすくなります。
Push、Pullとは?
→ SVNではコミット=サーバーへの反映でしたが、Gitではローカルのリポジトリに更新履歴を追加する事を「Commit」と言います。
ローカルからリモートリポジトリに追加することを「Push」、
リモートリポジトリから更新履歴をローカルリポジトリに取り込む事を「Pull」と言います。
またGitホスティングサービス(GitHub、BitBucketなど)では、Pull Requestという機能があります。
これは開発者のローカルリポジトリでの変更を他の開発者に通知する機能ですが、単なる通知機能ではありません!
Pushされた履歴に対して一度コードレビューを行い、その結果をリモートリポジトリに反映させるかを選択します。
もしPushした変更内容に問題があった場合に、Pull Requestに対してチームメンバーがフィードバックを投稿し、追加CommitをPushすることで微調整をする事が可能になります。
コードレビューを挟むため、バグも減少していき、結果として品質の高いコードを作成できます。
説明は以上になります。
GitホスティングサービスはFreeで利用できるものもあります。
Free版だとPrivateなリポジトリのみ作成できるBitBucketや、
Publicなリポジトリのみ作成できるGitHubなど、利用条件がサービスごとに異なるので
自分の利用条件を加味してサービスを選択してみるといいでしょう。
ではでは!
有名なGitホスティングサービス
↓
BitBucket
GitHub
Assembla
GitLab