Windows + Visual Studioで「まともなGUI」が使えるgit環境を整える

git_vs_icons
gitはコンソール(コマンドライン)で使うのが当たり前でしょ、みたいな空気がちょっと嫌だったり、実際Windows用のgit系ツールのGUIがげんなりするほど酷い完成度だったりしたこともあり、ぶっちゃけhgの方が使いやすいよね、と思わなくもないMercurial派のサイボウズ・ラボ 中島です、こんにちは。

まぁ、そうは言っても使わなくてはならなんこともあ...、じゃなくて、ぼちぼちWindows環境でもいい感じにGUIで使えるgitツール群が揃ってきたので簡単にまとめてみました。

…と言っても、GUIだけにほとんどインストールして実行するだけであります。
入れるのはこの3つ、(ただし、残念ながらどれも今の所は英語UIのみです)

この3つのツールはなんとコマンドラインgitの定番msysGit(Git for Windows)さえインストールされません。SourceTree以外の2つに至ってはSSHの鍵設定を自分で行う必要もありません。ノーCUI、ノーコンソール!
これらのツールはきちんとリポジトリフォルダの.gitフォルダを見てくれてるので、1つのリポジトリフォルダで相互運用可能。ざっと手元で試した範囲で日本語(SJIS/UTF8/UTF16)ファイル・日本語ファイル名共に問題はありませんでした。また、最新版ではどれもGithub Enterpriseとのpush/pullも可能になってます。

それぞれに得手不得手があるため、

  • Githubからローカル/ローカルからGithubへとリポジトリのcloneはGithub for Windowsで
  • Visual Studioプロジェクトのadd,commit,push,pullあたりはVS Tools for Gitで
  • それ以上、chechout,rebase等の高度なリポジトリ操作はSourceTreeで

...と役割分担して利用するのが現時点でのお勧めです。

Github for Windows

http://windows.github.com/
Github for Windowsは説明するまでもない、Github公式のWindows版GUIクライアントです、ちなみにWPFで作られてるっぽいですね、オープンソース化の予定はあるそうですがソースは未だに公開されていないようです。
Gh4w_2

シンプルなクライアントで機能的にはあまり見るべきところはないのですが、Githubからリポジトリをcloneしたりするのに便利なのでやはり入れておいた方がいいでしょう、Github for Windowsが入っていれば、Githubのサイトで「Clone in Windows」ボタンから自動的に起動してリポジトリを取得できるようになります。

SourceTree for Windows

http://www.atlassian.com/ja/software/sourcetree/overview
SourceTree_1

SourceTree for WindowsはMercurialやBitBucketもやってるAtlassianのGUI版gitツールです、高機能で使いやすいのでMac版が有名ですが、今年に入ってWindows版もリリースが始まり徐々に改良されて、だいぶ使えるようになってきた感じです。Windows版のMercurial対応を心からお待ちしております...。

Visual Studio Tools for Git Extension

http://visualstudiogallery.msdn.microsoft.com/abafc7d6-dcaa-40f4-8a5e-d6724bdb980c
VST4g_11

Visual Studio Tools for Git extensionは、Microsoft公式のVS拡張です。
基本が「TFSのためのgit」なので動きに若干クセがありますが、これまで出ていたGit Source Control ProviderGit Extensionsが激しく使いにくい(てゆうか、あれはただのコンソールコマンドGUIラッパーじゃ...、みたいな)ので、GUI派の方には個人的にVS Tools for Gitをお勧めします。リリース当初は結構アレだったようですが、こちらもぼちぼち改良されているようです。
Tools for Gitはさすがの公式で、VSの関連ファイルでちまちまと.gitignoteの管理に腐心することなく、プロジェクト関連ファイルをさくっとcommitできる(addの必要もない)ので、とりあえずローカルレベルでのVSプロジェクトのcommitや単純なPush/Pullぐらいまではこちらでそこそこ行けるんじゃないかと思います。チームエクスプローラーの中のページ遷移が少々難解ですが、リポジトリのcloneや履歴などは他のツールに任せてしまえば、触る範囲は最小限に留められます。

試しに、Githubに新規のリポジトリを作成、VSのプロジェクトを追加して、commit、pushしてみたスクリーンショットを順番に撮ってみたので、興味がある方は見てみてください。VSでリビジョン管理ツールを使ったことがあればだいたいの雰囲気はわかると思います。

github_newproj1 github_newproj2 Gh4w_3 Gh4w_4 github_newproj3 github_newproj4 vst4g_0 vst4g_b1 vst4g_b2 vst4g_b3 vst4g_b4 vst4g_b5 vst4g_b6 vst4g_b7 vst4g_b8 vst4g_b9

VSでソリューションの追加からadd, commit, sync(push/pull)まで完全にGUIで作業してGithubを更新、リポジトリには不要なbin/debugフォルダなどがノーケアで追加されていないのも確認できると思います。[sync]ボタンを押した場合Tools for Gitはpushとpullを同時に行います。

このローカルリポジトリのフォルダをExplorerからSourceTreeのウインドウにえいや、とDrag&Dropすれば、SourceTreeからforkの確認やより高度なリポジトリ操作もGUIで可能です。
SourceTree_2

SourceTreeからもpush/pullをしたい場合のSSH設定に関しては、すでに解説されているページがいくつかあると思うのでググってみてください。

それぞれ、まだ登場して日の浅いツール故に痒いところに手が届かない所や、運用上の問題、細かいbugなどが残っている可能性はありますが、ざっと使っていて感じるのは、今までなんだったのか? という完成度の高さです。Github, Atlassian, MSとまさにプロの犯行という奴ですね。
かつて一度トライして、TurtoiseGitやGit Extensions、Git Source Control ProviderのあんまりなGUIの出来の悪さに愛想をつかしsvnに戻ったり、コンソール派に転向された方々も少なからずいると思うのですが、ぼちぼちもう一度モダンなGUIでgit環境、試してみませんか?