Gitを触ってみるよ その2「WindowsでGitを使いやすくする」

最近、ちまちまとGit環境の整備をしていて、少しずつノウハウも溜まってきたので、忘れない内に書いておこうと思います。

GitBashを使おう

前回コマンドプロンプトからGitコマンドを叩いていた訳ですが、コマンドプロンプトだと色々といまいち不便な事が多いですよね?

そんな時はコレ! "GitBash"!! とっ、ても、カン、タン、だっ! という事で(?)、WindowsでGit操作をするなら、msysgitをインストールすると付属してくるGitBashを使うと何かと便利になります。

スタートメニューのGitの項目の中に"GitBash"というのがあるので、それをクリックするとコマンドプロンプトっぽい画面が立ち上がります。

Bashの機能がだいたいそのまま使えて、viとかgrepとかUNIX系のコマンドも基本的な辺りは入っているので、UNIX操作に慣れている人は重宝するのではないかと思います。*1

ただ、UNIX機とWindows機でコードを共有しようと思うと、文字コードの違いが問題になりますよね。今の時代、UTF-8に統一しておけば問題も発生しにくくてよいのですが、GitBashは残念ながらそのままではUTF-8の文字は表示できません。これはだいぶ試行錯誤したんですが、結果として、".bashrc"を使って起動時に設定するようにしてうまくいくようになりました。

export PS1='$ '
alias ls='ls -FCa --color'
chcp.com 65001
cd /c/tom/data/sourcecode
export GIT_PAGER=/c/tom/data/sourcecode/lib/less418w/less.exe

今の自分の".bashrc"の設定はこんな風になっています。プロンプトの変更とエイリアスの設定とフォルダ移動は、単なる自分の好みです。

ポイントは"chcp.com 65001"で、GitBashは実体はコマンドプロンプト上で動作しているようなので、コマンドプロンプト文字コードを変更する"chcpコマンド"を使って、UTF-8に切り替えています。お好みで、コマンドプロンプトのフォントを見易いものに設定するとよいでしょう。

あと、デフォルトのページャーだとUTF-8が文字化けしてしまうので、UTF-8を認識できるlessを落としてきて、それを使うようにしています。
http://www.greenwoodsoftware.com/less/

それから、git diffやgit logの表示に色を付ける為に以下のコマンドでグローバル設定として定義しています。

$ git config --global color.branch always
$ git config --global color.diff always
$ git config --global color.interactive always
$ git config --global color.status always

これで画面表示に関しては、Windows機でも日本語&カラー化したGit環境を手に入れる事ができました。*2

コミットコメントを編集するエディタをテキストエディタにする

git commitすると、標準だと、GitBashに入っているVimが起動するんですが、残念ながらUTF-8に対応してくれないようなので、代わりにテキストエディタが起動するようにしました。以下のコマンドで設定します。

$ git config --global core.editor "'c:/Program Files/sakura/sakura.exe' -CODE=4"

自分の場合はサクラエディタを使っているので、サクラエディタのEXEファイルを設定しています。

こう設定しておくとgit commitした時に、必要な情報がコメントで入力された状態でサクラエディタが起動してくるので、後は適当にコミットコメントを書いて保存終了すればコミット完了です。もちろん普通に日本語入力もできます。


Gitは環境さえできていれば、「ちょっと何か作ってみよ」って思ったら、フォルダを作ってgit initすればすぐにバージョン管理が開始できるのが素晴らしいですね。リモートリポジトリも割とサクっと作れるので、今までSubversionでやっていたような集中型リポジトリでのバージョン管理も簡単ですね。

次回は、リモートリポジトリの作り方辺りを書いてみようかなと思います。

*1:「PCでUNIX操作をするなら、Macにすればいいんじゃないの?」というツッコミはここでは置いておきます。(笑)

*2:ただし、日本語を含む場合、文字同士が重なったりとか、表示が崩れる場合がありました…。まぁ、文字が読めない訳ではないので、この辺は妥協点かなと…。