LogoMark.png

Git

Git

Git + Gitクライアント + OSSホスティングサービス

Git(ギット)とは、プログラムソースなどの変更履歴を管理する分散型のバージョン管理システム(VCS:Version Control System)のことで、もともとはLinuxの開発で使用されていたものですが、近年では世界中で利用される標準的な技術となっています。

CONTENTS


はじめに

従来のバージョン管理システムは、サーバー上にある1つのリポジトリ(データの溜池)を共同で使っており、利用者が増えると変更内容が衝突するなどの問題もありましたが、GitではローカルPCに変更履歴を含む完全なリポジトリの複製が作成できることで、オフラインでの作業も可能になるなど、分散的な共同作業がやりやすくなっています。

Gitそのものは、ターミナル(コンソール)からコマンドを入力して利用するものなのですが、一般にはこれをGUI操作できる SourceTree のような Gitクライアントソフトを利用してバージョン管理を行います。

付記:ホスティングサービスとして GitHub を利用する場合は GitHub Desktopが簡単・便利です。

Gitのキーワード

Fig03.png

右図は分散型バージョン管理システムのイメージです。Gitを利用するには、図中にある用語の理解が重要です。

リモートリポジトリ

分散型バージョン管理システムのリポジトリは、リモートリポジトリとローカルリポジトリの2種類に分けられます。リモートリポジトリは、ファイルを複数のメンバーで共有するために、ホスティングサーバに設置された場所のことです。後述する GitHub や Bitbucket というのは、リモートリポジトリのホスティングサービスです。Gitは管理するためのソフト、GitHubは管理されるデータを置くためのサービスです。初心者の方は、これを混同してわけがわからなくなることが多いので、注意しましょう。

ローカルリポジトリ

ファイルを個人で管理するために自分のPC上に設置された場所のことです。
 リポジトリをリモートとローカルの2種類に分けることで、普段の作業はローカルリポジトリを使ってPC上で行う、作業内容を公開したい時は、リモートリポジトリにアップロードする。また、リモートリポジトリを通して他のメンバーの作業内容を取得する・・といったことができるようになります。

Fig08.png

右図(クリックで拡大)は、SourceTree(後述)でローカルリポジトリを作成した例です。通常のフォルダ閲覧では、作業ファイルが見えるだけですが、ターミナルを用いてフォルダ内の隠しファイルを表示すると、そこに .git というディレクトリが見えます。更新履歴はその中に格納されています。     

Commit コミット

Fig08.png

ファイルやディレクトリの追加・変更を、リポジトリに記録する操作をコミットと言います。右図(クリックで拡大)は、SourceTree(後述)上でのファイルの変更からコミットまでの様子です。

WorkTree ワークツリー

Gitの管理下に置かれた、作業ディレクトリ(フォルダ)のことです。

Index インデックス

リポジトリとワークツリーの間に存在して、リポジトリにコミットするための索引を準備する場所のこと。コミット対象のファイルを索引に追加する操作は、「ステージング」「コミット予定」「管理対象」などと言います。

 Gitでは、コミットを実行した時にワークツリーから直接リポジトリ内に状態を記録するのでなく、その間に設けられているインデックスの設定された状態を記録するようになっているので、コミットしてファイルの状態を記録するには、はじめにインデックスにファイルを登録する必要があります。

Push プッシュ

ローカルリポジトリ内の変更履歴をリモートリポジトリにアップロードすることを Push といいます。Pushを実行すると、リモートリポジトリ内の変更履歴がローカルリポジトリの変更履歴と同じ状態になります。

Pull プル

リモートリポジトリを複数人で共有すると、メンバー全員がそこへプッシュしてきます。当然、自分のローカルリポジトリにも、ほかの人がプッシュした変更内容を取り込む必要があります。それが、Pull操作です。これを実行すると、リモートリポジトリから最新の変更履歴をダウンロードしてきて、ローカルリポジトリにそれを反映させます。

Clone クローン

リモートリポジトリの内容をローカルリポジトリに複製する操作。ローカルには新しいものが追加される・・という点で Pull とは異なります。




Gitクライアント

GitHub Desktop

GitHub Desktopは、GitHub が提供しているデスクトップアプリケーションで、 GitHub を利用した開発を簡単にするための Git のフロントエンドツールです。個人のプロジェクトをGitHub公開とローカルPCとで連携するには、これが最も使いやすいと思います。
参考:Google: GitHub Desktop 使い方

Atom

Atom は GitHub社で開発されているオープンソースのテキストエディタです。バージョン1.18以降、Git / GitHub 連携機能が標準で使えるようになっています。日常的にAtomエディターを使っている方は、これも検討候補になるかと思います。
参考:Google: Atom Git 連携

SourceTree

SourceTreeは、Bitbucketの提供を行っているAtlassian社が提供する無料のGitクライアントソフトで、Gitクライアントの定番です。グラフィカルなインターフェイスを備えており、リポジトリの操作を視覚的に行う・・つまりGUI操作でGitコマンドを実行してくれるソフトです。
 バージョン管理システムとしては、Gitだけでなく、Mercurial(hg)にも対応しています。
参考:Google: SourceTree 使い方




OSSホスティングサービス

リモートリポジトリを提供するサービス。当然ですが、その利用にはアカウント登録が必要です。

GitHub

GitHub(ギットハブ)は、GitHub社という会社によって運営されているOSSホスティングサービスで、Gitの仕組みを利用して、自分の成果物を保存、公開することができるようにしたものです。
 オープンな開発、つまり公開されてもよい・・というものであれば、無料で利用することができます(非公開リポジトリの利用は有料)。

Bitbucket

Bitbucket(ビットバケット)は、オーストラリアのソフトウェア会社Atlassianによって運営されている GitHub と同様のホスティングサービスで、バージョン管理システムとしては Git 以外に Mercurial を選ぶこともできます。
デフォルトは非公開で、5ユーザーまでであれば、非公開レポジトリの数は無制限で利用できます。Web開発では、こちらの方が向いていると言われます。

その他のOSSホスティングサービス




Git の基本的なコマンド




付記:Gitの語源

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 の略・・と考えると気持ちがいいですね。




PAGES

GUIDE

DATA

添付ファイル: fileFig03.png 631件 [詳細] fileFig08.png 546件 [詳細] fileFig09.png 313件 [詳細] fileFig12.png 584件 [詳細]
Last-modified: 2021-01-25 (月) 10:47:05