##基礎用語の確認
駆け出しのエンジニアです。プログラミングを学習していて、当然の様に出る専門用語や略語。それを理解したつもりにならないために確認として今回の記事を書くことにしました。
##バージョン管理
コードを書くファイルの変更履歴を管理することをバージョン管理と言います。(変更履歴のことをバージョンと呼んでいる)
バグが発生した時期やバグによる影響度を明確化するためにバージョン管理を行います。これをすることでサービス開発時の生産性が大きく上がります。
##リポジトリ
バージョン管理をするときに管理されるファイルをリポジトリと言います。
このリポジトリの中に入っているファイルを変更したときにcommit(ファイルの変更の差分をローカルのリポジトリに保存)することでバージョン管理を行えます。
##「分散型」と「集中型」
ちなみにバージョン管理には「分散型」と「集中型」の二つの方法があります。
分散型というのは開発者それぞれの個人のPC内に存在するローカルリポジトリにcommitしてからリモートリポジトリ(インターネット上にある唯一つの共有リポジトリ)にpush(リモートリポジトリにcommitした差分を追加すること)します。
分散型のメリットとしては
①ネット上のリポジトリにアクセスしなくても開発が行えるためオフラインでも仕事ができる
②ローカルリポジトリ内で他の開発者に影響を与えずに色々試したりできる
ことです。
分散型のバージョン管理サービス例: Github
一方、集中型のというのはリモートリポジトリに直接、複数人の開発者がアクセスしながら、開発を行うことです。なのでローカルリポジトリという概念が存在せず、commit = リモートリポジトリの反映を意味しています。
集中型のメリットとしては
①エンジニア側が大量のファイルを保存する必要がない
です。
集中型のバージョン管理サービス例: Subversion
ちなみに現在のほとんどの開発は分散型の手法で行われています。
##GitとGithubの違い
次はGitとGithubの違いについてです。私は最初、全く同じ物だと解釈していました。
Gitはバージョン管理をするためのツールの呼称です。そして、Githubは"Git"を利用したWebサービスの名前でPull Requestなどの開発者にとって使いやすい機能も追加されています。簡単にいうとGithubはGitの上位互換みたいなものです。
##まとめ
今回はgitの基本的な知識の解説を書いていきました。初心者エンジニアのバージョン管理の理解のお役に立てば幸いです。