WindowsでのGit環境構築とその注意点

 もともとはLinuxカーネル用のバージョン管理システムとして開発されたこともあって、GitのWindowsサポートは若干遅れている。特に日本語環境で利用する場合は設定などに注意が必要だ。そこで本記事では、Windows環境でGitを利用する方法およびその設定方法、そしてGUIでGitの機能を利用できるツールについても紹介する。

Windows環境向けのGitバイナリを選ぶ

 Gitは標準ではWindows環境をサポートしていない。Gitのコア部分はCで記述されているものの、周辺ツールやサーバー機能の実現にはPerlやシェルスクリプトを利用しているからだ。そのため、Windows環境でGitを利用するには、これらを含めた環境構築が必要となる。現在、Windows上でGitおよびその周辺環境をまとめてインストールできるものとして、msysgitCygwinがある。

 msysgitは、Windows向けにGCCや開発に必要なUNIXツールを提供するMinGW/MSysをベースに作成されたGit環境だ。必要な環境を一発で構築できるインストーラが用意されており、これを利用することでGitのほか、bashやPerlなど、Gitを利用するために必要なツールを簡単にインストールできる。ただし、GitとSubversionの連携を行うgit-svnや、Webブラウザでリポジトリを閲覧できるgit-instawebなどは付属していない。

 いっぽう、CygwinはWindows向けにUNIX互換環境を提供するもので、インストーラで「git」を選択することでPerlやbashなどの必要なツール一式がインストールされる。とりあえずGitを使いたいならmsysgitを、Cygwinをすでに利用している、もしくはgit-svnやgit-instawebを使いたいならCygwinと、使い方にあわせてどちらを利用するか選択すると良いだろう。もちろん、両方を共存させることも可能だ。

msysgitのインストール

 msysgitのインストーラはmysgitのプロジェクトページからダウンロードできる。インストールの途中でPATH環境変数の設定をどうするか尋ねられる(図1)ので、表1を参考に希望するものを選択しよう。

図1 PATH環境変数の設定画面
図1 PATH環境変数の設定画面


表1 msysgitのPATH環境変数設定
選択肢 説明
Use Git Bash only 付属する「Git Bash」環境からのみGitを使用する。通常はこの設定で問題ない
Run Git from the Windows Command Prompt コマンド プロンプトからもGitを利用できるように設定する
Run Git and included Unix tools from the Windows Command Prompt コマンド プロンプトからGitおよびPerlなどの付属UNIXツールを利用できるように設定する。findやsortなど、Windowsに含まれるコマンドラインツールとの競合が起こる場合があるので注意

 また、Gitは暗号化通信にSSHを利用するが、SSHクライアントとしてPuTTY(Windows環境で広く使われているGUIのSSHクライアント)を利用することもできる。PuTTYを利用する場合は図2の画面で「Use PLink」を選択し、PuTTYに含まれる「plink.exe」のパスを指定する。

図2 SSHクライアントの選択画面
図2 SSHクライアントの選択画面

 インストールが完了したら、デスクトップに作成される「Git Bash」アイコン、もしくはスタートメニューの「プログラム」-「Git」-「Git Bash」からBashを起動できる。Gitを利用する際には、基本的にはこの環境からGitを操作することになる。

CygwinによるGitのインストール

 CygwinでGitをインストールする場合は、「Select Packages」画面で「git」を選択すればよい。また、bash用の補完辞書「git-completion」およびGUIツール「git-gui」も用意されているので、利用したい場合はこれらも選択しておこう(図3)。また、GitからSubversionリポジトリにアクセスする「git-svn」機能を利用する場合は、別途「subversion-perl」パッケージも必要だった(図4)。

図3 Cygwinで用意されているGit関連パッケージ
図3 Cygwinで用意されているGit関連パッケージ


図4 git-svnを利用する場合は「subversion-perl」パッケージも必要
図4 git-svnを利用する場合は「subversion-perl」パッケージも必要

文字コード関連の設定

 Windows環境でGitを利用する際、問題になるのが日本語などマルチバイト文字の扱いだ。Windows環境では通常、日本語の文字コードとしてShift JIS(CP932)が利用されている。いっぽう、Gitではマルチバイト文字の文字コードとしてUTF-8を利用することが推奨されているようだ。また、ファイル名に関してもWindows環境ではCP932が、Mac OS Xを含むUNIX/LinuxではUTF-8(もしくはEUC-JP)が採用されていることが多いため、たとえば日本語のファイル名を持つファイルをWindows環境でコミットした場合、UNIX環境ではファイル名が文字化けしてしまう。

現状ファイル名については、日本語を使わないという解決策しかない。いっぽう、もしコミットメッセージに日本語を利用したい場合は次のような設定を行うとよい。

・msysgitを利用している場合

 デフォルトの設定ではコミットメッセージの編集にvi(vim)、ログなどの表示にlessを使用するようになっているが、msysgitに付属するvimやlessはマルチバイト文字の表示/入力を正しく行えない。この問題は、これらを適切なものに置き換えることで解決できる。作業手順は下記の通りだ。

1. 日本語対応のlessおよび文字コード変換ツールnkfをインストールする

 マルチバイト文字に対応している最新版のlessをダウンロードし、msysgitのインストールディレクトリ内の「bin」フォルダ(通常はC:\Program Files\Git\bin)にコピーする。

 最新版lessのWindows用バイナリは、lessホームページからダウンロードできる。バイナリアーカイブ(原稿執筆時の最新版はless418w.zip)に含まれる「less.exe」を上記のフォルダにコピーすればよい。

 また、nkfについては http://www.asuka.cx/software/nkf/ の「ファイル置き場」にWindows用バイナリが公開されているので、こちら(原稿執筆時の最新版はnkf-2.0.8b.bin.tar.gz)をダウンロードし、含まれる「nkf.exe」を先ほどの「less.exe」と同様msysgitのインストールディレクトリ内の「bin」フォルダにコピーする。

2. Git Bashで日本語を表示できるように設定ファイル(inputrc)を用意する

 msysgitのインストールディレクトリ(通常はC:\Program Files\Git)以下の「etc」フォルダ内にテキストエディタで「inputrc」というファイルを作成し、下記のように入力して保存する。

set convert-meta off
set meta-flag on
set output-meta on
set kanji-code utf-8
3. Gitが使用するエディタ/ページャを環境変数で指定する(設定ファイルprofileを編集)

 先ほど「inputrc」を作成したフォルダにある「profile」という設定ファイルの末尾に、下記の行を追加する。

export GIT_EDITOR="'<使用するテキストエディタのパス>'"
export GIT_PAGER="nkf -s | less"

 このとき、テキストエディタのパス中の「\」は「/」に、「C:」は「/c」に置き換えて指定する。たとえば「C:\Program Files\xyzzy/xyzzy.exe」というエディタを使用したい場合は次のように指定する。

export GIT_EDITOR="'/c/Program Files/xyzzy/xyzzy.exe'"

 これで、コミットメッセージの編集を指定したテキストエディタで行えるようになる。なお、日本語のコミットメッセージを入力する際はUTF-8(UTF-8N)で保存しなければならない点に注意してほしい。

・Cygwinを利用している場合

 Cygwinに含まれるBashやvimはデフォルトでマルチバイト文字の入力・表示に対応している。ただし、CygwinのコンソールはWindowsのコマンドプロンプトと同様、文字コードとしてShift JIS(CP932)を利用しているため、若干の設定が必要である。なお、下記ではエディタにvim、ページャにlvを使用している。これらはともにCygwinのインストーラからインストール可能なので、事前にインストールしておこう。

1. vimの設定ファイルの編集

 vimの個人設定ファイル「~/.vimrc」に、下記の設定を追加する。

set termencoding=cp932
set encoding=utf-8
2. Gitが使用するエディタ/ページャを環境変数で指定する

 「~/.bashrc」に、下記の設定を追加する。

export GIT_PAGER="lv"
export GIT_EDITOR="vim"

 なお、日本語入力のOn/Off切り替えはAlt+半角/全角キー(英語キーボードの場合はAlt+`)で行える。

UTF-8に対応した端末エミュレータ「Poderosa」を使う

 Cygwin版のGitを利用する場合、端末エミュレータとして標準の「Cygwin Bash Shell」ではなく、Poderosaを利用すると便利だ。Poderosaはツールバーで使用する文字コードを切り替えられるので、Gitを利用する場合はこれを「utf-8」に設定すればよい。

図5 UTF-8に対応した端末エミュレータ「Poderosa」
図5 UTF-8に対応した端末エミュレータ「Poderosa」

 なお、Poderosaの文字コードを「utf-8」で使用する場合は、~/.vimrcおよび~/.bashrcを下記のように設定しよう。

~/.vimrcの設定:
set termencoding=utf-8
set encoding=utf-8
~/.bashrcの設定:
export GIT_PAGER="lv -Ou8"
export GIT_EDITOR="vim"

GUIでGitを操作できるgit-gui

 Windows環境でGitを利用する際に、GUIで利用できるクライアントがほしいというユーザーも多いだろう。現在Windows環境で利用できるGUIクライアントとしては、Gitに付属する「git-gui」と、エクスプローラのショートカットメニューから利用できるTortoiseGitというものがある。

 git-guiはmsysgitとCygwin版Gitの両方に含まれており、シェルで「git gui」と実行することで起動できるほか、msysgitでGitをインストールした際はスタートメニューの「プログラム」-「Git」以下にも登録されている。なお、git-guiのUIは日本語化されているため比較的取っつきやすいが、日本語のdiffに難があるので注意が必要だ。

 git-guiを起動すると、まず図6のようなトップ画面が表示される。ローカルに新しいGitのローカルリポジトリを作成するなら「新しいリポジトリを作る」(「git init」に相当)、ほかのリポジトリからファイルをダウンロード/コピーして新たなリポジトリを作成する場合は「既存リポジトリを複製する」(「git clone」に相当)、既存のローカルリポジトリを管理するなら「既存リポジトリを開く」を選択すればよい。

図6 git-guiのスタートアップ画面
図6 git-guiのスタートアップ画面

 新しいリポジトリを作る場合はリポジトリ作成先を、既存リポジトリを複製するなら複製元URLとリポジトリ作成先を指定して「作成」「複製」をクリックすると、リポジトリの作成が行われ、管理画面が表示される。(図7図8)。

図7 リポジトリの作成画面
図7 リポジトリの作成画面


図8 リポジトリの複製画面
図8 リポジトリの複製画面

 リポジトリの管理画面では、ウィンドウ左上に変更が加えられた、もしくは追加されたファイルがリストされる(図9)。このリスト中でコミットしたいファイルのアイコンをクリックすると、そのファイルがウィンドウ右下の「ステージングされた(コミット予定済みの)変更」に追加される(図10)。この操作をコミットしたいファイルすべてに行ったら、右下の「コミットメッセージ」テキストボックスにコメントを入力して「コミット」をクリックすると、コミットが実行される。

図9 「コミット予定に入っていない変更」に変更されたファイルがリストされる
図9 「コミット予定に入っていない変更」に変更されたファイルがリストされる


図10 「コミット予定に入っていない変更」のファイルアイコンをクリックすると、そのファイルがコミット対象に追加される
図10 「コミット予定に入っていない変更」のファイルアイコンをクリックすると、そのファイルがコミット対象に追加される

 なお、コミットメッセージは日本語でも入力でき、メッセージの登録もUTF-8で正しく行われる。ただし、ファイルを選択した際に画面右上に表示されるdiffでは、図11のように日本語が正しく表示されない場合があるので注意してほしい。

図11 画面右上には選択したファイルのdiffが表示されるが、日本語は文字化けする場合がある
図11 画面右上には選択したファイルのdiffが表示されるが、日本語は文字化けする場合がある

 また、メニューからはブランチの作成やリモートリポジトリへのpushなども行えるほか(図12)、「編集」-「オプション」でユーザー名やメールアドレスなどの設定を行うこともできる(図13)。

図12 ブランチを指定してpushが行える
図12 ブランチを指定してpushが行える


図13 オプション設定ではユーザー名やメールアドレス、動作のカスタマイズが可能
図13 オプション設定ではユーザー名やメールアドレス、動作のカスタマイズが可能

将来に期待したいTortoiseGit

 Windows環境で利用できるGUIのGitクライアントとして現在開発が進められているのがTortoiseGitだ。TortoiseGitは、エクスプローラのショートカットメニューから操作できるSubversionクライアント「TortoiseSVN」の姉妹プロダクトにあたる。ただし、TortoiseGitはまだ開発中の段階で、一部の機能しか実装されていない。原稿執筆時の最新版である0.2 Previewを試してみたところ、エクスプローラに図14のようなショートカットメニューが追加され、ローカルリポジトリの作成は行えたものの、リモートリポジトリの複製や、新規ファイルの追加といった操作は行えなかった(図15)。まだ実用レベルには達していないものの、これからの成長に期待したい。

図14 TortoiseGitのショートカットメニュー
図14 TortoiseGitのショートカットメニュー


図15 TortoiseGitのコミット画面
図15 TortoiseGitのコミット画面