高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

Git Extensionsを使う

ついでに、Visual Studio 2012にはGitクライアント機能がありません。
Professional以上にならGitクライアント機能を追加できるという話ですが、Express for Windows Phoneにはそれは追加できません。将来的には(Windowsアプリも作りたいし)Visual Studio 2012も買いたいですが、今時分はちょっと厳しいですねえ。

で、そういうときはGit Extensionsを使います(EclipseのEGitでもいいですが、いちいちEclipseを立ち上げなければいけないのはちょっと面倒ですね。昔作ったOpenSSH形式秘密鍵を使えるのは楽ですが)。
Git Extensionsをインストールしてシェルと連携させます。

で、簡単な手順。

Git Extensionsを単体で起動する。


Git Extensionsのシェル拡張メニューからGitリポジトリは作成出来ない(?)ようなので、単体で起動してリポジトリを作成。
リポジトリの種類は「個人リポジトリ」でいいです。パスは今使っているVisual Studioのプロジェクトフォルダを指定してください。

Commitする


ハイ簡単。目的のフォルダをエクスプローラで開き、シェル拡張メニューからCommitを選びます。Stageボタンを押して追加したファイルがコミット対象になります。無視ファイルを追加したい場合はファイルの右クリックメニューより無視エントリーを追加します。(C#プロジェクトの場合、無視するのは*.suo, *.csproj.user, /Bin, /Obj, *.dbくらいかな)
一つもステージにファイルが無い場合、「全てのファイルをステージに入れてコミットしますか?」という旨のダイアログが表示されます。

(必要なら)Pushする

まあ必要でないわけはないと思いますが、GitリポジトリはPushしなければ履歴管理しか出来ません。ネット上のリポジトリにPushすることではじめてリポジトリを他のPCからアクセス出来るようになります。
プライベートリポジトリを作りたい場合はBitbucket、そうで無い場合はGithubあたりを使うと良いでしょう。その辺のセットアップ手順は山ほど記事がありますので割愛します。


コミット時に「Commit&Push」かシェル拡張メニューからPushを選ぶとPushが出来ます。URLにはBitbucketやGithubにリポジトリを作成したときに表示される「ssh://〜」のURLを貼り付けてください。

Push先を登録する

このままだといちいちPushをする度にURLを聞かれます。面倒なのでPush先を登録してしまいましょう。
この場合は、Git Extensionsを単独起動→リポジトリを開き、メニューからリモート→リモートリポジトリの管理を開きます(Pushするときに「URL」でなく「リモート」を選択し、「管理」ボタンからアクセスすることも可能なはず)。

ここで、名前、URL、秘密鍵ファイルのパスを指定して、サーバに登録すればOKです。BitbucketおよびGithubに公開鍵が登録されており、正しい秘密鍵が設定されていれば、SSH鍵の読み込み→テスト接続 で表示されるコマンドプロンプトに次の文字が表示されるはず。

Using username "git".
conq: logged in as TakamiChie.

You can use git or hg to connect to Bitbucket. Shell access is disabled.

え、PuTTYって何?

という人もいるはず。わたしも普段OpenSSHのほうを使ってたので鍵がなく、面倒でした。
その場合、Git Extensionを単独起動→リモート→PuTTY→キーの生成/インポート→Generateボタン より作成出来ます。

できあがった秘密鍵(Public key for...以下のテキストボックス)の内容を全文コピーしてサーバの設定画面に貼り付け、「Save private key」ボタンより秘密鍵を保存しておきます。
わたしは他のキーと混ざると紛らわしいので使用しているサーバのドメイン名.ppk(例:bitbucket.ppk)にして保存してます。
ここで設定した秘密鍵をPush時に設定してあげてください。


とりあえずこんな感じでGitが使えます。TortoiseGitも使ってみましたが、シェル拡張をしてもよいPCであればこっちの方が楽かも・・・(シェルをいじってはいけなけない場合は、EclipseのEGitを使うしかないかな)。
ただ、コミット履歴を探索して比較したり、任意のバージョンに戻すとかはちょっとこの画面だけではやりづらい。そのような操作を頻繁に行う場合はEclipseのEGitの方が操作は楽かもしれませんね。