14:00本連載はWindows上でGitを利用しようとしているユーザー向けに、これから数回かけて解説していきます。今回はGitでのリモートリポジトリの操作を中心に解説していきます。今回の対象読者は下記のとおりです。Extensions(フリー)リモートリポジトリ前回まで、ローカルリポジトリにおける各種操作について解説してきましたが、今回はリモートリポジトリと連携した操作について解説していきます。Gitにおけるリモートリポジトリとは、ローカルリポジトリ以外のネットワーク上やファイル上に存在するものです。リモートリポジトリは1つに限らず、複数持つこともできます。あるリポジトリを複製すると、複製元がリモートリポジトリとして関連付きますが、手動で特定ロケーションのリポジトリをリモートリポジトリとして登録することもできます。分散バージョン管理システムであるGitでは多様なリモートリポジトリの操作パターンが考えられますが、本稿ではよくある例として、1つのリモートリポジトリを複数人の開発者が共有するような、共有リポジトリのパターンについて解説していきます(図1)。これは通常のSVNなどで慣れた集中型バージョン管理システムと同じようにGitを利用するパターンが多いと考えるからです。厳密にいうとリモートリポジトリと共有リポジトリは異なる概念ですが、SVNのような集中型バージョン管理システムと同様にGitを利用する場合は、イコールと思っていただいて問題ありません。共有リポジトリの配置について共有されるリモートリポジトリは、各開発者からアクセス可能な場所に配置しなければいけません。Gitでは、これらにアクセスするために、下表のプロトコルをサポートしています。共通にアクセス可能なファイルシステムを用意。UNIXならNFS、Windowsならファイル共有で実現可能。シンプルで用意しやすい。ファイアウォール外など外部ネットワークからのアクセスに問題あり。Git付属のデーモンを利用。付属デーモン利用可能。高速な転送プロトコル。特定ポートでの通信が必要。Msysgitとの組み合わせでデッドロックが発生することがあり、Windows上での利用に問題あり。書き込みリポジトリとして用意可能。サーバー設定が必要であり、Linuxに比べWindowsでは導入の敷居が高い。HTTPサーバーを利用。匿名の読み取り専用リポジトリとして利用されることが多い。一般的なプロトコルでファイアーフォールなどで問題にならない。書き込みには別途WebDavプロトコルが必要。それぞれのプロトコルには一長一短があります。SSHや、HTTP/HTTPSなどのプロトコルは、Linuxをサーバーとする場合とWindowsをサーバーとする場合とでは敷居の高さが変わってくるでしょう。本稿ではサーバーセットアップについての解説が主目的ではないのと、Windowsからの利用をメインに考え、ファイル共有の仕組みを利用して解説していきます。共有目的で新しいリポジトリを作成する場合には、ベアリポジトリと呼ばれる形式のリポジトリを作成します。ベアリポジトリとは、通常のリポジトリと異なり、作業ディレクトリを持たないものです。ベアリポジトリの作成には2種類の方法があり、1つ目はinitコマンドで新規作成する方法、2つ目はcloneコマンドで既存のリポジトリからベアリポジトリを複製して作成する方法です。新規にベアリポジトリを作成するには、initコマンドに続いて--bareオプションを指定し、引き続きリポジトリのフォルダを指定します(リスト1)。--sharedオプションは第三者がアクセス可能なように適切なアクセス権を設定します。ベアリポジトリのフォルダ名の最後は、「.git」と命名する慣習となっています。//magi/share/repos/sample.gitフォルダ名からも分かるように本稿では、「magi」という名前のサーバーから共有されるshareフォルダを利用しています。共有フォルダはUNC名で指定せずに、ネットワークドライブに割り当てて利用しても構いませんし、同一PC上の別フォルダを指定しても構いません(*1)。repository]を選択すると、リポジトリ作成ダイアログが表示されます(図2)。ディレクト名を入力し、リジポジトリの種類に[作業ディレクトリを持たない中央リポジトリ]にチェックを入れ、[作成]ボタンをクリックすると、ベアリポジトリが作成されます。*1同一PC上の共有リポジトリを用意することは、分散の意味がありませんが、リモートリポジトリの操作を学習するために利用するならこの方法でも構いません。既存のリポジトリを用いてベアリポジトリを作成するには、cloneコマンドに続き--bareオプションを指定し、続いて複製元となるリポジトリ、ベアリポジトリとなるフォルダ名を指定します(リスト2)。'//magi/share/repos/sample.git'...done.この既存リポジトリからベアリポジトリを作成する場面としては、先行して作成した開発物を共有リポジトリとしてメンバーに公開する場合などに利用されるでしょう。万が一、共有リポジトリが壊れてしまった時に、複製されたリポジトリを持っていればこの手順で復元することもできます。Clone]を選択します。クローンダイアログが表示されるため、クローンするリポジトリ、クローン先などを入力、リポジトリの種類を[作業ディレクトリを持たない中央リポジトリ]にチェックを入れ、[クローン]ボタンをクリックすれば完了です。