S.Kudoをフォローする

Gitを知ろう!昔のソース管理とGit

開発環境・ツール

社内では当然のように皆がGitを使っています。
私は最近入社しました。もともと設計や分析をメインとし、プログラミングは小さなWindowsバッチやJavaプログラムを作成していたくらいです。
そもそもGitを知っているようで知らなかったのです。というわけで、Git初心者がGitを使いこなせるようになるぞ!ということで始めて行きますが、生暖かく見守っていただけたらと思います。

昔はVSSやCVS、SVN(正しくはSubversionですが以降SVNと表記します)なんかを使ってはいたのですが、いざGitを利用しようとすると混乱してしまうことが多々ありました。
それぞれ使い方や違いを整理し、Gitを深く知っていこうと思います

仕組みの違い

前述の通り、代表的なものとしてはVSSCVSSVNなんかがあります。
筆者はVSS、SVNを利用していました。そして昨今はGitに手を付けています。
それぞれの特徴と違いをまとめてみました。

VSSCVS/SVNGit
排他制御悲観的排他楽観的排他楽観的排他
リポジトリ集中リポジトリ集中リポジトリ分散リポジトリ

悲観的排他・・・ファイル更新を行おうとする時にそのファイルの更新権を取得(ロック)してから行うことにより、同時に複数人が同じファイルを更新することを抑止する方法

楽観的排他・・・同時に複数人がそのファイルを更新することは稀であり、更新が競合してしまった場合、その時に考える(マージ、破棄等)方法

集中リポジトリ・・・ひとつのリポジトリに複数人が接続し利用する方法

分散リポジトリ・・・各個人がリポジトリを持ち、任意のタイミングで同期する方法

イメージとしては下図になります。

用語の違い

それぞれ基本的な用語の違いを確認します。

VSSCVS/SVNGit
チェックアウトリポジトリのソースコードのロックリポジトリの作業コピー取得ブランチの切り替えと作業コピー取得
チェックインリポジトリへの反映
コミットリポジトリへの反映(ローカル)リポジトリへの反映
ブランチ履歴の流れを記録するもの
※仕組みはタグと同じ
履歴の流れを記録するもの
※仕組みはタグと同じ
履歴の流れを記録するもの

まとめ

ごくごく簡単にですが、これまで利用していたソースコード管理の違いを整理してみました。
ソースコード管理ツールはそれぞれにメリットもありデメリットもあります。
言語やIDE、フレームワークや使い方で適切なものを選択することができれば良いです。
Gitの本格的な利用と理解はこれからになりますので少しずつでも先輩方に追いつかねば!