Git
Gitの講義の補足&まとめです。
Gitとは
Gitとは、バージョン管理システムの一つです。
バージョン管理システムと呼ばれるものは、複数ありますが、
これを書いている時点ではおそらく最もメジャーなバージョン管理システムです。
バージョン管理システムとは
バージョン管理システムとは、ファイルの変更の履歴を管理するためのツールです。
バージョン管理システムでファイルを管理しておけば、ファイルに対して、
過去に誰がいつ何を変更したかが分かるようになります。
特にプログラム開発の時に重宝します。
プログラムを修正していたら、気づいたら正常に動かなくなっていた!
なんてことは日常的によくあります。
そんな時に、バージョン管理していたら、動いていた頃の状態に戻することができます。
また、昨日と今日でどこが変更されたのか?
という、変更箇所の比較もできます。
バージョン管理システムの種類
バージョン管理システムは、大きく分けて2種類あります。
- 集中管理方式
- 分散管理方式
の2種類です。
最近の主流は分散管理方式となっており、Gitも分散管理方式に分類されます。
2つの違いを簡単に説明しておきます。
集中管理方式
まず、バージョン管理システムには、
「リポジトリ」と呼ばれる履歴情報を保持するデータベースがあります。
集中管理方式は、文字通り、一つのサーバーにリポジトリを設置してそこで全て管理している仕組みです。
作業する際にサーバーに接続できる状態にしておかないと、変更を反映させることができません。
集中管理方式の代表的なツールには
があります。
分散管理方式
分散管理方式では、リモートリポジトリとローカルリポジトリという、2種類のリポジトリがあります。
文字通り、リポジトリが分散している状態で、
サーバー上にリモートリポジトリを設置し、
開発者が自分のPCにローカルリポジトリを持つ、
という構成になります。
分散管理方式の場合、個人個人のPCにリポジトリが存在するため、
サーバーに接続できない状況でも、バージョン管理をすることができます。
ある程度ローカルリポジトリで開発を進めて、
まとめてリモートリポジトリに反映させることも可能です。
分散管理方式の代表的なツールは
- Git
- Mercurial
があります。
バージョン管理の目的
バージョン管理システムでできることは最初に述べましたが、
改めてバージョン管理システムの目的を述べておきます。
開発のスピードが上げるため
バージョン管理していると、修正を適宜反映させる手間は増えます。
しかし、バグや問題が発生したときに、調査が楽になります。
また、テスト的に新しい機能を追加するのも簡単です。
結果的に開発のスピードが上がります。余分なソースコードを消すため
ソースコードを修正するとき、既存のソースコードをコメントアウトして、
日付などをコメントとして残して修正することがあります。
そうしておけば、ソースコードを見るだけで修正の履歴を見ることができるため、
履歴を確認したい時は便利です。
しかし、動いているソースを確認したい時は、
過去の修正履歴のソースコードは邪魔です。
バージョン管理をしておけば、過去の修正履歴はリポジトリに残っているので、
最新のソースコードに残しておく必要がありません。
結果的に無駄なソースを残さずに済みます。
SourceTree
バージョン管理をしようと思うと、
「Git」「SourceTree」「GitHub」「BitBucket」など、色々新しい用語が出てきます。
それぞれ解説しておきます。
まずはSourceTreeを解説します。
SourceTreeは、簡単に言えばGitをGUI操作するためのツールです。
通常、Gitを使用してバージョン管理をする場合、Gitをダウンロードしてインストールします。
Gitだけをインストールしてバージョン管理する場合は、コマンドで操作します。
しかし、コマンドの操作に慣れていなくて、
マウスで簡単に操作したい、という人もいるでしょう。
そんな人のためのGUIツールがSourceTreeです。
なので、コマンドの操作でも問題ないという人には不要のツールですが、
マウスで視覚的に操作したい、という人はインストールしておくとよいでしょう。
なお、JavaのソースコードをGitで管理する場合は、
eclipseからGitを使用したほうが便利です。
eclipseで開発しているソースコードの管理であれば、SourceTreeは不要です。
GitHubとBitbucket
「GitHub」「Bitbucket」についても軽く説明しておきます。
簡単に言うとリモートリポジトリを提供してくれるクラウドサービスです。
Gitをインストールしておけば、ローカル環境でバージョン管理をすることはできます。
しかし、複数人で開発を行いたい場合や、ソースコードを共有したい場合には、リモートリポジトリが必要です。
それをあらかじめクラウド上で提供しているのがGitHubやBitbucketです。
細かい使い方などは他のサイトを参考にしてください。
初めてバージョン管理を使用する場合、
「Git」「GitHub」「SouceTree」「Bitbucket」など、いろんな用語が出てきます。
混乱しないように整理しておきましょう。