AxiZ沖縄ブログ

エンジニア育成学校【AxiZ沖縄】のブログです。

Git

Gitの講義の補足&まとめです。

Gitとは

Gitとは、バージョン管理システムの一つです。
バージョン管理システムと呼ばれるものは、複数ありますが、
これを書いている時点ではおそらく最もメジャーなバージョン管理システムです。

バージョン管理システムとは

バージョン管理システムとは、ファイルの変更の履歴を管理するためのツールです。
バージョン管理システムでファイルを管理しておけば、ファイルに対して、
過去に誰がいつ何を変更したかが分かるようになります。

特にプログラム開発の時に重宝します。
プログラムを修正していたら、気づいたら正常に動かなくなっていた!
なんてことは日常的によくあります。
そんな時に、バージョン管理していたら、動いていた頃の状態に戻することができます。

また、昨日と今日でどこが変更されたのか?
という、変更箇所の比較もできます。

バージョン管理システムの種類

バージョン管理システムは、大きく分けて2種類あります。

  • 集中管理方式
  • 分散管理方式

の2種類です。
最近の主流は分散管理方式となっており、Gitも分散管理方式に分類されます。

2つの違いを簡単に説明しておきます。

集中管理方式

まず、バージョン管理システムには、
リポジトリ」と呼ばれる履歴情報を保持するデータベースがあります。

集中管理方式は、文字通り、一つのサーバーにリポジトリを設置してそこで全て管理している仕組みです。
作業する際にサーバーに接続できる状態にしておかないと、変更を反映させることができません。

集中管理方式の代表的なツールには

があります。

分散管理方式

分散管理方式では、リモートリポジトリとローカルリポジトリという、2種類のリポジトリがあります。
文字通り、リポジトリが分散している状態で、
サーバー上にリモートリポジトリを設置し、
開発者が自分のPCにローカルリポジトリを持つ、
という構成になります。

分散管理方式の場合、個人個人のPCにリポジトリが存在するため、
サーバーに接続できない状況でも、バージョン管理をすることができます。
ある程度ローカルリポジトリで開発を進めて、
まとめてリモートリポジトリに反映させることも可能です。

分散管理方式の代表的なツールは

があります。

バージョン管理の目的

バージョン管理システムでできることは最初に述べましたが、
改めてバージョン管理システムの目的を述べておきます。

  • 開発のスピードが上げるため

    バージョン管理していると、修正を適宜反映させる手間は増えます。
    しかし、バグや問題が発生したときに、調査が楽になります。
    また、テスト的に新しい機能を追加するのも簡単です。
    結果的に開発のスピードが上がります。

  • 余分なソースコードを消すため

    ソースコードを修正するとき、既存のソースコードコメントアウトして、
    日付などをコメントとして残して修正することがあります。
    そうしておけば、ソースコードを見るだけで修正の履歴を見ることができるため、
    履歴を確認したい時は便利です。
    しかし、動いているソースを確認したい時は、
    過去の修正履歴のソースコードは邪魔です。
    バージョン管理をしておけば、過去の修正履歴はリポジトリに残っているので、
    最新のソースコードに残しておく必要がありません。
    結果的に無駄なソースを残さずに済みます。

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」など、いろんな用語が出てきます。
混乱しないように整理しておきましょう。