Git + Gitクライアント + OSSホスティングサービス
Git(ギット)とは、プログラムソースなどの変更履歴を管理する分散型のバージョン管理システム(VCS:Version Control System)のことで、もともとはLinuxの開発で使用されていたものですが、近年では世界中で利用される標準的な技術となっています。
従来のバージョン管理システムは、サーバー上にある1つのリポジトリ(データの溜池)を共同で使っており、利用者が増えると変更内容が衝突するなどの問題もありましたが、GitではローカルPCに変更履歴を含む完全なリポジトリの複製が作成できることで、オフラインでの作業も可能になるなど、分散的な共同作業がやりやすくなっています。
Gitそのものは、ターミナル(コンソール)からコマンドを入力して利用するものなのですが、一般にはこれをGUI操作できる SourceTree のような Gitクライアントソフトを利用してバージョン管理を行います。
付記:ホスティングサービスとして GitHub を利用する場合は GitHub Desktopが簡単・便利です。
右図は分散型バージョン管理システムのイメージです。Gitを利用するには、図中にある用語の理解が重要です。
分散型バージョン管理システムのリポジトリは、リモートリポジトリとローカルリポジトリの2種類に分けられます。リモートリポジトリは、ファイルを複数のメンバーで共有するために、ホスティングサーバに設置された場所のことです。後述する GitHub や Bitbucket というのは、リモートリポジトリのホスティングサービスです。Gitは管理するためのソフト、GitHubは管理されるデータを置くためのサービスです。初心者の方は、これを混同してわけがわからなくなることが多いので、注意しましょう。
ファイルを個人で管理するために自分のPC上に設置された場所のことです。
リポジトリをリモートとローカルの2種類に分けることで、普段の作業はローカルリポジトリを使ってPC上で行う、作業内容を公開したい時は、リモートリポジトリにアップロードする。また、リモートリポジトリを通して他のメンバーの作業内容を取得する・・といったことができるようになります。
右図(クリックで拡大)は、SourceTree(後述)でローカルリポジトリを作成した例です。通常のフォルダ閲覧では、作業ファイルが見えるだけですが、ターミナルを用いてフォルダ内の隠しファイルを表示すると、そこに .git というディレクトリが見えます。更新履歴はその中に格納されています。
ファイルやディレクトリの追加・変更を、リポジトリに記録する操作をコミットと言います。右図(クリックで拡大)は、SourceTree(後述)上でのファイルの変更からコミットまでの様子です。
Gitの管理下に置かれた、作業ディレクトリ(フォルダ)のことです。
リポジトリとワークツリーの間に存在して、リポジトリにコミットするための索引を準備する場所のこと。コミット対象のファイルを索引に追加する操作は、「ステージング」「コミット予定」「管理対象」などと言います。
Gitでは、コミットを実行した時にワークツリーから直接リポジトリ内に状態を記録するのでなく、その間に設けられているインデックスの設定された状態を記録するようになっているので、コミットしてファイルの状態を記録するには、はじめにインデックスにファイルを登録する必要があります。
ローカルリポジトリ内の変更履歴をリモートリポジトリにアップロードすることを Push といいます。Pushを実行すると、リモートリポジトリ内の変更履歴がローカルリポジトリの変更履歴と同じ状態になります。
リモートリポジトリを複数人で共有すると、メンバー全員がそこへプッシュしてきます。当然、自分のローカルリポジトリにも、ほかの人がプッシュした変更内容を取り込む必要があります。それが、Pull操作です。これを実行すると、リモートリポジトリから最新の変更履歴をダウンロードしてきて、ローカルリポジトリにそれを反映させます。
リモートリポジトリの内容をローカルリポジトリに複製する操作。ローカルには新しいものが追加される・・という点で Pull とは異なります。
GitHub Desktopは、GitHub が提供しているデスクトップアプリケーションで、 GitHub を利用した開発を簡単にするための Git のフロントエンドツールです。個人のプロジェクトをGitHub公開とローカルPCとで連携するには、これが最も使いやすいと思います。
参考:Google: GitHub Desktop 使い方
Atom は GitHub社で開発されているオープンソースのテキストエディタです。バージョン1.18以降、Git / GitHub 連携機能が標準で使えるようになっています。日常的にAtomエディターを使っている方は、これも検討候補になるかと思います。
参考:Google: Atom Git 連携
SourceTreeは、Bitbucketの提供を行っているAtlassian社が提供する無料のGitクライアントソフトで、Gitクライアントの定番です。グラフィカルなインターフェイスを備えており、リポジトリの操作を視覚的に行う・・つまりGUI操作でGitコマンドを実行してくれるソフトです。
バージョン管理システムとしては、Gitだけでなく、Mercurial(hg)にも対応しています。
参考:Google: SourceTree 使い方
リモートリポジトリを提供するサービス。当然ですが、その利用にはアカウント登録が必要です。
GitHub(ギットハブ)は、GitHub社という会社によって運営されているOSSホスティングサービスで、Gitの仕組みを利用して、自分の成果物を保存、公開することができるようにしたものです。
オープンな開発、つまり公開されてもよい・・というものであれば、無料で利用することができます(非公開リポジトリの利用は有料)。
Bitbucket(ビットバケット)は、オーストラリアのソフトウェア会社Atlassianによって運営されている GitHub と同様のホスティングサービスで、バージョン管理システムとしては Git 以外に Mercurial を選ぶこともできます。
デフォルトは非公開で、5ユーザーまでであれば、非公開レポジトリの数は無制限で利用できます。Web開発では、こちらの方が向いていると言われます。
git: イギリス英語のスラングで「バカ」という意味
Linus Torvaldsは「愚かなコンテンツトラッカー」と説明しています。
The name "git" was given by Linus Torvalds when he wrote the very first version. He described the tool as "the stupid content tracker" and the name as (depending on your way): - random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of "get" may or may not be relevant. - stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang. - "global information tracker": you're in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room. - "g*dd*mn idiotic truckload of sh*t": when it breaks
一般的なUNIXコマンドでは、「発音可能で、実際にはないランダムな2〜4文字の組み合わせ」がよく使用されます。Global information Tracker の略・・と考えると気持ちがいいですね。