[ Home on 246net ] [ Git index ]

Windows環境でGitを使う

GitはLinux OS上でC言語とシェルスクリプトで記述されており、Windows環境ではMSYSというPOSIX APIをWindows API上で模擬するラッパーを介して移植したmsysgit(Git for Windows)を使います。そのため、Linux上でGitを使うより不安定な部分があります。

また、msysgit以外にも、Cygwin上でgit、Javaで作成されたJGitなどがあります。

msysgitはコマンドライン(MSYSに含まれるbash、またはコマンドプロンプト)のほかにGUI(Git GUI)も持っていますが、Tortoiseシリーズに慣れた人向けにTortoiseGitや、より高度な(そしてちょっと複雑な)GitExtensionsというmsysgit上で動くGUIツールが存在します。

Gitでの日本語の扱いは、以前はまともに対応されていない(使いたければ英語を使え的な)状態でしたが、徐々に対応が進んできました。msysgit 1.7.10(2012年リリース)からUTF-8対応となり、日本語Windows環境で日本語ファイル名を使ってもGit内ではUTF-8で扱うので、UTF-8ロケールのLinuxとリポジトリを共有しても問題ないようになりました。ただし、MSYSのツール(bash、vimなど)が日本語を十分に扱えないため、bashコマンドラインやvimで日本語が入力できない、他の問題があります。

インストール

msysgit

Unicode対応したmsysgit(ver.1.7.10以降)をインストールします。

この公式ホームページから[Downloads]リンクをたどって、最新版をダウンロードします。ファイル名には常にpreviewが付いていますが、正式版なるものはなさそうなので(永遠にpreview?)。

Git-1.8.1.2-preview20130201.exe (2013/02/10現在の最新版)

ダウンロードしたファイルを実行します。インストーラが立ち上がります。


C:\>assoc .sh
.sh=sh_auto_file

C:\>ftype sh_auto_file
sh_auto_file=C:\Windows\SysWOW64\cmd.exe /C ""C:\Program Files (x86)\Git\bin\sh.
exe" "--login" "%1" %*"

msysgitの問題

Git Bashで日本語入力不可

コマンドライン環境Git Bashでは日本語の表示は可能ですが、コマンドラインで日本語を入力しても反映されません(IMEの入力結果が破棄される感じ)。コミット時にコマンドラインでコミットログを日本語で記述したり、コマンドラインで日本語ファイル名を指定するのに不便です。

回避策) Windowsのコマンドプロンプトでgitコマンドを実行する(PATHを通すかフルパスでgitを指定する)。

Git Bashでvimが日本語入力不可

コマンドライン環境Git Bashでコミット時にログを編集するエディタでデフォルトで設定されているvimは、日本語入力ができません。

回避策) デフォルトのエディタを変更する。

gitプロトコルでpush時にハングアップ

1.7.11現在、gitプロトコルでリモートのリポジトリにpushをするとハングする問題があります。修正の目途/回避策は明らかではないようです。

回避策) なし

TortoiseGit

Windowsのエクスプローラを拡張するツールです。msysgitを使用します。Unicode対応msysgitに対応するTortoiseGitはVer.1.7.9以降です。

公式ホームページの真ん中付近にある、[Download TortoiseGit]のリンクをたどります。32bit版と64bit版があるので、Windows OSに合わせて選択します。

TortoiseGit-1.8.1.0-64bit.msi (2013/02/10現在の最新版)

次に、国際化対応の言語パックからJapaneseを、同じく32bit版か64bit版か合わせてダウンロードします。

TortoiseGit-LanguagePack-1.8.1.0-64bit-ja.msi (2013/02/10現在の最新版)

ダウンロードしたTortoiseGit本体のインストーラを実行します。インストーラが立ち上がります。

ダウンロードした言語パックのインストーラを実行します。

エクスプローラで任意のフォルダで右クリックし、コンテクストメニューを表示します。次のように、TortoiseGit関連のメニュー項目が3つ追加されています。

言語パック(日本語)をインストールしただけでは日本語にはならないので、[TortoiseGit]メニュー>[Settings]をクリックします。

「Settings」ダイアログが表示されるので、[Language:]欄をドロップダウンし、[日本語(日本)]を選択します。[OK]ボタンを押します。

ふたたびエクスプローラで任意のフォルダを右クリックすると、コンテキストメニューにTortoiseGitのメニューが日本語で表示されています。

Git Extensions

Git for Windows (msysgit) の上でGUI環境を提供するツールです。

この公式ホームページから[Download]をたどって最新版がダウンロードできます。

注) 2012/9/15現在、最新バージョンは2.40ですが不安定(バグ多し)という声が聞こえます。公式ホームページ左側メニューのDownloadsの下にある Show all をたどって、2.32を使用するのがよいようです。

T.B.D. (上述注のとおり、最新版が不安定なのでしばらく様子見)

JGit

msysgitを使わず、Javaでフルスクラッチに作成されたGitです。主にプログラミング用のAPIライブラリとして作成されたものですが、コマンドラインから利用できるCLIを持ち、Javaがインストールされていれば、Windows上(コマンドプロンプト)から実行することができます。

この公式ホームページから[Download]をたどって最新版がダウンロードできます。

CLI(コマンド)だけ使用するなら、[jgit.sh (Self-contained command line executable)] をダウンロードします。

org.eclipse.jgit.pgm-2.2.0.201212191850-r.sh (2013-02-10時点の最新版)

このファイルは先頭がシェルスクリプト(Unix/Cygwin用)になっており、続いてJavaのクラスファイルが格納されたJARファイル形式となっています(どうやって作ったんだろう?)。Bashスクリプト環境が入っているWindows機なら直接実行できますが、Bashスクリプト環境がない場合はJavaコマンドで実行可能JARファイルとして実行します。

C:\> java -jar C:\java\jgit\org.eclipse.jgit.pgm-2.0.0.201206130900-r.sh 
 clone git://foo/bar
  :

毎回このコマンドを手で入力するのは酷なので、バッチファイルを作成すると便利でしょう。

jgit.bat で以下の内容を作成し、環境変数PATHのある場所にjgit.batを置きます(あるいは環境変数PATHにjgit.batのある場所を追加)。

@echo off
java -jar C:\java\jgit\org.eclipse.jgit.pgm-2.0.0.201206130900-r.sh %*

Cygwin git

Windows上にUnix環境を模擬するCygwinの上でgitを使うことができます。Cygwin 1.7以降でUnicode対応しているので、gitで日本語ファイル名を扱うことができます。Cygwin上でgitを使う方法は、ほぼUnixと一緒です。

Cygwinのsetup.exeで、コンポーネント一覧からgitをインストールします。

また、msysgit(msys)のバグである、bashやvimでの日本語入力、gitプロトコルでのpush時のハングアップは、Cygwinのgitでは発生しません。

SourceTree

Atlassian社が無償で提供するGitクライアントツールです。リポジトリの可視化が優れているようです。Windows 7以降が必要です。

.NET Framework 4.5を必要とします。インターネットへのオンラインインストール時は、そのPCに.NET Framework 4.5がインストールされていなければ自動で.NET Framework 4.5のダウンロードとインストールが行われます。インターネットにオフラインインストールするときは、先に.NET Framework 4.5をインストールする必要があります。

注) .NET Framework 4.5は、Windows XPをサポートしていません。Vistaはサポートされていますが、SourceTreeはWindows 7以降を謳っているので、Vistaでは動かないようです。

注) .NET Framework 4.0と4.5は同じマシンに同時には存在できないため、.NET Framework 4.0をインストールしている環境に、.NET Framework 4.5をインストールすると、.NET Framework 4.0は失われてしまいます。4.0と4.5の非互換性を踏んでいるアプリケーションがあると、動作しなくなってしまいますので留意してください。

参考文献