先日Gitについて学ぶ機会がありました。
いままで正直なんとなくGitを使っていたこともありこちらで整理しておきます。
GitとSVN
これら二つはともに、ファイルの版管理や変更履歴を管理することのできるバージョン管理システムです。
違いは一言でいうとリポジトリがどこにあるかというところにあります。
※リポジトリ 情報、成果物を格納しておくための保管場所
SVN
SVNは集中型と呼ばれる管理方式をとっています。 この方式ではファイルと変更履歴がサーバー一つに格納されます。
-
メリット
操作が簡単なこと -
デメリット
集中管理しているため各個人でのバージョン管理ができないこと
Git
分散型と呼ばれる管理方式です。この方式では各々がローカルにリポジトリを持っており、リモートリポジトリにプッシュするということを行います。
- メリット
各個人でバージョン管理ができること
各個人がリポジトリを持っているためサーバが使えなくなっても復旧できること - デメリット
覚えることが多いこと
現在はGitでのバージョン管理の方が主流のようです。
Gitの概念と機能
ここからはGitの機能についてまとめます。主に使用する機能として以下のものがあります。
-
ブランチ
同じリポジトリ内で履歴を分けることができます。そうすることで他のブランチに影響を与えることなく並行した開発を行うことができます。ブランチを作ることを「ブランチを切る」と表現します。 -
チェックアウト
ブランチを切り替えること。切り替えるときには「スタッシュ」を行うことでコミットしていない内容を退避させることができます。 -
コミット
ローカルリポジトリにファイルの変更を記録すること。 -
プッシュ
ローカルリポジトリの変更内容をリモートリポジトリに反映させること。 -
マージ
指定した二つのブランチを統合すること。 -
リベース
ブランチの根元(親コミット)を別のコミットに付け替えること。指定したブランチの変更内容が取り込むことができます。 -
プル
リモートリポジトリから最新の変更を取得、そしてそのまま現在のブランチにマージを行うこと。 -
フェッチ
リモートリポジトリから最新の変更を取得すること。マージは行いません。
おわりに
以前フェッチとプルの違いは?と聞かれたときにはっきり答えられませんでした。あまり知らずに使用するのはかなり危険ですよね。
これからGitを使う機会は多くなると思うのでなんとなく使うよりしっかり理解していて使っていこうと思います。見ていただきありがとうございました!