鎌玉のよしなしごと

日々のよしなしごとをつぶやいているだけ。由無し言(とりとめもない話)か、良しな仕事(nice job!)かは、あなた次第。

GitHub for Windowsの導入について(追記あり)

2012/7/23 Power Shellのプロファイル設定などを追記しました。

前書き

GitHubが提供する、Windows上で手軽にGitを操作できる『GitHub for Windows』。
導入して使用するにあたり、はまるところがあったので備忘録的に記しておく。
ちなみに、『GitHub for Windows』はmsysGitをベースにしている。

前提

  • マシンは、Windows 7 64bit(SP1)
  • GitHubには、アカウントを登録済み。
  • 特記事項(Cygwinについて)

GitHub for Windows の導入手順

GitHub for Windows から GitHub for Windows をダウンロード。

ダウンロードされたGitHubSetup.exeを実行。

『インストール』を選択。

GitHubで登録したアカウント(またはEmailアドレス)とパスワードを入力して、『LOG IN』。

Gitで利用する名前をメールアドレスを入力して、『CONTINUE』。

  • 保存した内容はGitの設定ファイル「~/gitconfig」に登録される。
  • Windows上では%USERPROFILE%\.gitconfig
    • %USERPROFILE%はデフォルトでは、C:\Users\[ログイン名]。

『dashbord』をクリック。

『tools』→『options』をクリック。

「default storage directory」に、Gitで管理するデフォルトのディレクトリを入力。
「default shell」は『Git Bash』か『Power Shell』がおすすめ。

(2012/7/23 追記)
『Custom』を選択するとシェル実行ファイルのパスを自分で選択できる。
(2012/7/23 追記終わり)

設定に間違いがなければ、GitHub上の自分のアカウントのリポジトリが参照できる。


※秘密鍵、公開鍵も一連の操作の中で自動的に作成され、GitHub上に登録される。

ローカルPCの%USERPROFILE%\.sshフォルダに公開鍵が github_rsa
秘密鍵が github_rsa.pub というファイル名で生成される。

また、登録しているメールアドレスにSSHキー登録の通知が案内される。

Git Shell について

上記において、Git Shellは『Git Bash』か『Power Shell』がおすすめとしたが、それぞれ日本語対応に問題がある。
※『GitHub for Windows』のUIツールは日本語対応に問題ないため、日本語ファイル名を使用したい場合はUIを使用した方が手軽である(ただし、ホスティングサービスはGitHubしか参照できないが…)

(2012/7/23 追記)
Cmd』の場合は、日本語ファイル名の表示も入力もできない。
(2012/7/23 追記終わり)

■Git Bash

□ 日本語の入力ができない
msysでは、ホームディレクトリにある.inputrcファイルをSJIS入力ができるように設定すれば日本語入力ができるようになるはず。
参考: MinGWの設定(2) - Hacking to the Gate !

しかし、msysGitが使用しているmsys-1.0.dllが古い(?)らしく、次の不具合が発生する。
シェル上でIMEから日本語を入力したとき、確定すると文字化けする。

(2012/7/23 追記)


(2012/7/23 追記終わり)

この問題の対応方法としては、以下の2つがあるようだ。

■Power Shell

日本語の表示/入力は、設定を行うことで、Git Bashより簡単に対応できる。
ただし、Git Bashのviなどは当然使えない。

□ 日本語ファイル名表示時のエスケープ表示解消
git statusなどでファイル名を表示したとき、日本語のファイル名がエスケープ表示される。

ファイル名のエスケープ表示の除外
Gitは標準で非ASCIIな文字がコンソール出力に使われていると\xxxxとエスケープ表示します。これをしないように、これをOFFする必要があります。

git config [--global] core.quotepath off

Unicode対応したGit For Windows、周辺ツールの設定について | OPC Diary - No Code, No Life.


□ 日本語ファイル名の入力補完時の文字化け解消
git addなどに続けて、TABキーを押すとファイル名が補完されるが、日本語ファイル名だと文字化けする。

しかし、回避方法を見つけました!

d:\work\Test> chcp 65001
d:\work\Test> git add {tab}
これで、日本語が化けずに表示されます。

残念ながら、コードページの変更はなぜか「カレントが git repository にある場合」は次のコマンドに対してしか効きません。

毎回 chcp65001 を叩く必要があります。git repository に入ると shell の表示がちらちら切り替わりますしどこかしらの既定の設定を取得しているんでしょうかねー。

GitHub for Windows Shell が凄い便利 - お だ のスペース

毎回実行するのがイヤな場合は、PowerShellのプロファイルを利用する。
%UserProfile%\Documents\WindowsPowerShell\ フォルダに、Microsoft.PowerShell_profile.ps1 を作成し、以下の記述を行う。

chcp 65001

上記のプロファイルは、現在のユーザーと PowerShellシェルのみに適用される。設定は自己責任で。
参考: http://technet.microsoft.com/ja-jp/library/bb613488%28VS.85%29.aspx

(2012/7/23 追記)
Gitを実行するPowerShellシェルのみに適用したい場合は、以下のファイルの末尾に「chcp 65001」を追加することで適用される。
%UserProfile%\AppData\Local\GitHub\PoshGit_xxxxxxxx\profile.example.ps1 (xxxxxxxxはGUID?)

Gitを実行するPowerShellシェルは、このプロファイルを引数として受け取っている。
PoshGitというのは、PowerShellシェルでGitを実行するパッケージのようだ。

余談であるが、Git Bashのシェル や DOSのCMDシェルは、以下のバッチファイルから実行されるようだ。
%UserProfile%\AppData\Local\GitHub\PortableGit_xxxxxxxx\bin\git-cmd.bat
%UserProfile%\AppData\Local\GitHub\PortableGit_xxxxxxxx\bin\git-bash.bat
これらを編集することで、設定を変更できるかもしれない。
(2012/7/23 追記終わり)

その他の設定

WinMerge を Diffツール、Mergeツール に使用する

Gitのdiff・mergeをgitconfigだけでWinMergeにする - nrm://lab.kss.inc - Petittech を参考に gitconfig に以下の設定を行う

[merge]
	tool = WinMerge
[mergetool "WinMerge"]
	path = C:/Program Files/WinMerge/WinMergeU.exe
	cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" /m /r=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"
[diff]
	tool = WinMerge
[difftool "WinMerge"]
	path = C:/Program Files/WinMerge/WinMergeU.exe
	cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" -e -ub -dl \"Base\" -dr \"Mine\" \"$LOCAL\" \"$REMOTE\"

git difftool コマンドで、WinMergeが起動するようになる*3
差異があるファイルが複数ある場合は、ファイルを閉じたら次のファイルが開く。

■コメントを秀丸で記述する

git commit -m"コミットの内容" でなく、git commit のみを実行するとエディタが起動する。
これを秀丸に変更する。

エディターの既定のエンコーディングをUTF-8にする

最後に、コミットメッセージをUTF-8で入力するため、使用するエディターの既定のエンコーディングをUTF-8にします。
秀丸を使用するのであれば、次のようなコマンドを打ち、/fu8オプション付きで秀丸を起動するように設定します。

git config --global core.editor "'C:/Program Files/Hidemaru/Hidemaru.exe' //fu8"

Git日本語対応備忘録 | be free

※もしかして、この設定がなくても、PowerShellからの実行は、テキストファイルに関連づけられたエディタが起動するのかもしれない。

最後に

以上、記述してきたのだが、msysGit の日本語入力が正常にできるようになれば、『GitHub for Windows』は削除しようと考えている。

その理由は、インストール先のフォルダ名が、以下のように一意にできないからだ。

  • gitの実行ファイル(git.exe)のインストール先のパスが長い
    • %UserProfile%\AppData\Local\GitHub\PortableGit_xxxxxxxx\bin (xxxxxxxxの部分はGUID?)
  • GitHub.exeも NETFrameWork2.0のClickOnce機能 を使用しているようで、GitHub.exeがアップデートされるごとに、新しいフォルダにインストールされる
    • %UserProfile%\AppData\LocalApps\2.0\xxxxxxxx\gith..tion_xxxxxxxx\GitHub.exe

(2012/7/23 追記)
id:noromanba さんが補足してくれました。
GitHub for Windowsと日本語入力 - nrm://lab.kss.inc - Petittech
noromanba++
(2012/7/23 追記終わり)

*1:Cygwinのホームディレクトリーは、Cygwinのインストール先にして他と設定が混在しないように今のところはしている

*2:mintty上からのみ操作している。PATHを通す場合は優先順位に注意する。 参考:[http://d.hatena.ne.jp/tuto0621/20110216/1297847088:title]

*3:git mergetool は未確認