SCMとは?
SCM(Source Control Management)とは日本語ではソフトウェア構成管理といい、 ファイルの変更履歴を管理するソフトウェアとその仕組み を指す
SCMを使ったバージョン管理
リポジトリ とはファイルやその変更履歴を保管する場所のこと

Aさんがファイルを更新、ファイルとAさんの変更履歴を保存する

Aさんの更新後Bさんがファイルを更新、ファイルとBさんの変更履歴を保存

このように変更履歴がたまっていき、前に変更した内容も消えないようになっています。
SCMのメリット
ファイル名が煩雑にならない
- リポジトリで全てのバージョンの履歴を保持しているため、ファイル名が同じでも変更内容を確認することができます
変更内容の履歴をたどれる
- リリース後に何か問題が発生した際、どこで問題が発生したか追跡しやすい
- 問題が発生する前のバージョンに戻せば、すぐにシステムを復旧できる
素早い開発が可能になる
- バージョン管理が効率的に行われており、素早い開発に貢献
バージョン管理方式(集中型・分散型)
集中型

- クライアントサーバー方式とも呼ばれる
- バージョン管理を専用のサーバで一元管理する方式
- ネットワークに接続しなければ ファイルを参照することができない
- ファイルをアップロードすることでバージョンが加算される
分散型

- 集中型にあったようなメインとなるリポジトリとは別に、各ユーザのPC内にリポジトリのコピーを持つ方式
- サーバに接続しなくても ファイルを利用することができる
- 作業内容をコミットすることでバージョンが加算され、リモートリポジトリに反映できる
ローカルリポジトリとリモートリポジトリ
- 複数人で作業内容を共有するリポジトリ
- ツールの提供などで開発する時以外にも使われることがある
- 開発者一人一人が自分のマシン上に配置するリポジトリ
ローカルリポジトリで作業をして、キリが良い時にリモートリポジトリに作業内容を反映することで他の人とファイルを共有する