Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Gitでリモートリポジトリを操作する

Windowsユーザー向けGit入門(5)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2013/09/19 14:00

 本連載はWindows上でGitを利用しようとしているユーザー向けに、これから数回かけて解説していきます。今回はGitでのリモートリポジトリの操作を中心に解説していきます。

目次

対象読者

 今回の対象読者は下記のとおりです。

  • Windowsに関する基礎的な知識
  • Gitに興味がある方
  • Subversionなどの別のバージョン管理システムを利用したことがある方

必要な環境

  • Git for Windows(フリー)
  • Git Extensions(フリー)

リモートリポジトリ

 前回まで、ローカルリポジトリにおける各種操作について解説してきましたが、今回はリモートリポジトリと連携した操作について解説していきます。

 Gitにおけるリモートリポジトリとは、ローカルリポジトリ以外のネットワーク上やファイル上に存在するものです。リモートリポジトリは1つに限らず、複数持つこともできます。例えば、あるリポジトリを複製すると、複製元がリモートリポジトリとして関連付きますが、手動で特定ロケーションのリポジトリをリモートリポジトリとして登録することもできます。

 分散バージョン管理システムであるGitでは多様なリモートリポジトリの操作パターンが考えられますが、本稿ではよくある例として、1つのリモートリポジトリを複数人の開発者が共有するような、共有リポジトリのパターンについて解説していきます(図1)。これは通常のSVNなどで慣れた集中型バージョン管理システムと同じようにGitを利用するパターンが多いと考えるからです。

図1:概要図
図1:概要図

 厳密にいうとリモートリポジトリと共有リポジトリは異なる概念ですが、SVNのような集中型バージョン管理システムと同様にGitを利用する場合は、イコールと思っていただいて問題ありません。

共有リポジトリの配置について

 共有されるリモートリポジトリは、各開発者からアクセス可能な場所に配置しなければいけません。Gitでは、これらにアクセスするために、下表のプロトコルをサポートしています。

表1 プロトコルの種類
サポートする
プロトコル
概要 メリット デメリット
ローカル
プロトコル
共通にアクセス可能な
ファイルシステムを用意。
UNIXならNFS、
Windowsなら
ファイル共有で実現可能。
シンプルで用意しやすい。 ファイアウォール外など
外部ネットワークからの
アクセスに問題あり。
Git
プロトコル
Git付属のデーモンを利用。 付属デーモン利用可能。
高速な転送プロトコル。
認証の仕組みがなく、
特定ポートでの通信が必要。
Msysgitとの組み合わせで
デッドロックが
発生することがあり、
Windows上での利用に問題あり。
SSH
プロトコル
SSHサーバーを利用し、
一般的な方法。
認証の仕組みがあり、
書き込みリポジトリとして
用意可能。
サーバー設定が必要であり、
Linuxに比べWindowsでは
導入の敷居が高い。
HTTP/HTTPS
プロトコル
HTTPサーバーを利用。
匿名の読み取り専用
リポジトリとして
利用されることが多い。
一般的なプロトコルで
ファイアーフォールなどで
問題にならない。
サーバー設定が必要。
書き込みには別途
WebDavプロトコルが必要。

 それぞれのプロトコルには一長一短があります。SSHや、HTTP/HTTPSなどのプロトコルは、Linuxをサーバーとする場合とWindowsをサーバーとする場合とでは敷居の高さが変わってくるでしょう。本稿ではサーバーセットアップについての解説が主目的ではないのと、Windowsからの利用をメインに考え、ファイル共有の仕組みを利用して解説していきます。

共有リポジトリの作成

 共有目的で新しいリポジトリを作成する場合には、ベアリポジトリと呼ばれる形式のリポジトリを作成します。ベアリポジトリとは、通常のリポジトリと異なり、作業ディレクトリを持たないものです。ベアリポジトリの作成には2種類の方法があり、1つ目はinitコマンドで新規作成する方法、2つ目はcloneコマンドで既存のリポジトリからベアリポジトリを複製して作成する方法です。

 新規にベアリポジトリを作成するには、initコマンドに続いて--bareオプションを指定し、引き続きリポジトリのフォルダを指定します(リスト1)。--sharedオプションは第三者がアクセス可能なように適切なアクセス権を設定します。ベアリポジトリのフォルダ名の最後は、「.git」と命名する慣習となっています。

リスト1 ベアリポジトリの作成
$ git init --bare --shared //magi/share/repos/sample.git
Initialized empty Git repository in //magi/share/repos/sample.git

 フォルダ名からも分かるように本稿では、「magi」という名前のサーバーから共有されるshareフォルダを利用しています。共有フォルダはUNC名で指定せずに、ネットワークドライブに割り当てて利用しても構いませんし、同一PC上の別フォルダを指定しても構いません(*1)。

 GUIで操作する場合は、コンテキストメニューから[GitEx Create new repository]を選択すると、リポジトリ作成ダイアログが表示されます(図2)。ディレクト名を入力し、リジポジトリの種類に[作業ディレクトリを持たない中央リポジトリ]にチェックを入れ、[作成]ボタンをクリックすると、ベアリポジトリが作成されます。

*1

 同一PC上の共有リポジトリを用意することは、分散の意味がありませんが、リモートリポジトリの操作を学習するために利用するならこの方法でも構いません。

図2:ベアリポジトリの作成
図2:ベアリポジトリの作成

 既存のリポジトリを用いてベアリポジトリを作成するには、cloneコマンドに続き--bareオプションを指定し、続いて複製元となるリポジトリ、ベアリポジトリとなるフォルダ名を指定します(リスト2)。

リスト2 既存リポジトリからベアリポジトリの作成
$ git clone --bare ./sample //magi/share/repos/sample.git
Cloning into bare repository '//magi/share/repos/sample.git'...
done.

 この既存リポジトリからベアリポジトリを作成する場面としては、先行して作成した開発物を共有リポジトリとしてメンバーに公開する場合などに利用されるでしょう。また万が一、共有リポジトリが壊れてしまった時に、複製されたリポジトリを持っていればこの手順で復元することもできます。

 GUIによる操作は、エクスプローラーのコンテキストメニューから[GitEx Clone]を選択します。クローンダイアログが表示されるため、クローンするリポジトリ、クローン先などを入力、リポジトリの種類を[作業ディレクトリを持たない中央リポジトリ]にチェックを入れ、[クローン]ボタンをクリックすれば完了です。

図3:クローンによるベアリポジトリの作成
図3:クローンによるベアリポジトリの作成

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト statemachine(statemachine)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:Windowsユーザー向けGit入門
All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5