検索
リンク
タグ
ASP.NET
.NET
ASP.NET MVC
F#
Azure
Visual Studio
ASP.NET Core
ライトニングトーク
Plone
Selenium
AJAX
C#
jQuery
ADO.NET Entity Framework
JavaScript
SQL Server
EFCore
LINQ
WebMatrix
Fizz-Buzz
カテゴリ
最新の記事
最新のコメント
記事ランキング
最新のトラックバック
以前の記事
2024年 02月 2024年 01月 2023年 12月 2023年 11月 2023年 10月 2023年 09月 2023年 08月 2023年 07月 2023年 06月 2023年 05月 2023年 04月 2023年 03月 2023年 02月 2023年 01月 2022年 12月 2022年 11月 2022年 10月 2022年 09月 2022年 08月 2022年 07月 2022年 06月 2022年 05月 2022年 04月 2022年 03月 2022年 02月 2022年 01月 2021年 12月 2021年 11月 2021年 10月 2021年 09月 2021年 08月 2021年 07月 2021年 06月 2021年 05月 2021年 04月 2021年 03月 2021年 02月 2021年 01月 2020年 12月 2020年 11月 2020年 10月 2020年 09月 2020年 08月 2020年 07月 2020年 06月 2020年 05月 2020年 04月 2020年 03月 2020年 02月 2020年 01月 2019年 12月 2019年 11月 2019年 10月 2019年 09月 2019年 08月 2019年 07月 2019年 06月 2019年 05月 2019年 04月 2019年 03月 2019年 02月 2019年 01月 2018年 12月 2018年 11月 2018年 10月 2018年 09月 2018年 08月 2018年 07月 2018年 06月 2018年 05月 2018年 04月 2018年 03月 2018年 02月 2018年 01月 2017年 12月 2017年 11月 2017年 10月 2017年 09月 2017年 08月 2017年 07月 2017年 06月 2017年 05月 2017年 04月 2017年 02月 2017年 01月 2016年 12月 2016年 11月 2016年 10月 2016年 09月 2016年 08月 2016年 07月 2016年 06月 2016年 05月 2016年 04月 2016年 03月 2016年 02月 2016年 01月 2015年 12月 2015年 11月 2015年 10月 2015年 09月 2015年 08月 2015年 07月 2015年 05月 2015年 04月 2015年 03月 2015年 02月 2015年 01月 2014年 12月 2014年 11月 2014年 10月 2014年 09月 2014年 08月 2014年 06月 2014年 04月 2014年 03月 2014年 02月 2014年 01月 2013年 12月 2013年 10月 2013年 09月 2013年 08月 2013年 07月 2013年 06月 2013年 05月 2013年 04月 2013年 03月 2013年 02月 2013年 01月 2012年 12月 2012年 11月 2012年 10月 2012年 09月 2012年 08月 2012年 07月 2012年 06月 2012年 05月 2012年 04月 2012年 03月 2012年 02月 2012年 01月 2011年 12月 2011年 11月 2011年 10月 2011年 09月 2011年 08月 2011年 07月 2011年 06月 2011年 05月 2011年 04月 2011年 03月 2011年 02月 2011年 01月 2010年 12月 2010年 11月 2010年 10月 2010年 09月 2010年 08月 2010年 07月 2010年 06月 2010年 05月 2010年 04月 2010年 03月 2010年 02月 2010年 01月 2009年 12月 2009年 10月 2009年 09月 2009年 07月 2009年 06月 2009年 05月 2009年 04月 2009年 03月 2009年 02月 2009年 01月 2008年 12月 2008年 11月 2008年 10月 2008年 09月 2008年 08月 2008年 07月 2008年 06月 2008年 05月 2008年 04月 2008年 03月 2008年 02月 2008年 01月 2007年 12月 2007年 11月 2007年 04月 2007年 03月 2007年 02月 2007年 01月 2006年 11月 2006年 10月 2006年 09月 2006年 08月 2006年 07月 |
2012年 12月 02日
※本稿は「PowerShell Advent Calendar 2012」に向けての記事です。
バージョン管理システムとのつきあい仕事上、自分の立場は基本的にはデベロッパー。C#, SQL, JavaScript, HTML, CSS を書く ASP.NET プログラマである。 当然、作成したソースコードは、なんらかのバージョン管理システムに保管、開発メンバと共有している。 使用バージョン管理システムとしては、ウン十年前は RCS使ってたような記憶がうっすらとある。 その後、今の勤め先に移籍して Visual Source Safe (ちなみにほとんど保管庫状態だが今も活きている)、Subversion と変遷。 最近は Git を本格的に使い始めたところだ。 使用OS は Windows OS なので、msysGit と TortoiseGit をインストールして使っている。 Git を使い始めた初期のころは、GUI があったほうが迷わずに済むので、TortoiseGit は大変ありがたい。 自分が何をやっているのか・やろうとしているのかが視覚的にわかりやすいこともあって安心して使える。 しかしだんだん習熟してくるにつれて、今度は GUI がまどろっこしくなる。 そうなると今度は CUI であるコマンドプロンプトの出番だ。 コミットの繰り返しなど、CUI ならカーソル上 > Enter の2ストロークですぐに実行できる。 そんな Windows でも CUI で Git 派な人にお勧めな CUI シェルは、msysGit をインストールしたときに同時にインストールされる Git Bash ... ではなく、PowerShell である。 Posh-Git素の PowerShell では Git Bash にかなわない。しかし、Posh-Git というモジュールを PowerShell に追加することで、 Windows 上最強の Git 用 CUI シェル に変化するのだ。 何ができるか?早速、Posh-Git をインストールした状態の PowerShell を開いて作業を開始してみよう。まずローカルリポジトリを作成しよう。 「git i」とまで入力したら Tab キーを押してみてほしい。 すると「git initi」と、 Git のコマンドが入力補完される のだ。 「git br<tab>」で「git branch」、「git c<tab>」で「git checkout」。 「git s<tab>」で「git stash」、さらに続けてTabで「git status」といった要領だ。 もちろん、Git Bash でも Git コマンドの入力補完は効く。 しかし、「git i」で Tab を押すと「init か imap-sendか、どっちにしたいかわからないから、選んでよ」となり、曖昧さがなくなるまで打鍵しないと、補完してくれないのがイマイチ。 いっぽう、PowerShell の場合は Tab を押すごとに「これかい?」「これかい?」と次々クルクルと候補をインラインで表示してくれる。 「おお、これこれ!」と思ったところで Enter 押せば実行されるし、もしくは続きのパラメータをそのまま入力継続できるので、便利である。 物言うプロンプトさて「git init .」と入力を完成して Enter で実行しよう。するとローカルリポジトリがカレントディレクトリにできるわけだが、このときのプロンプトの変化に注目。 なんと、 プロンプトに現在のブランチ名が表示される のだ。 続けて作業フォルダ内に index.html というファイルをひとつ作ろう。 するとプロンプトに赤い文字で 「+1 ~0 -0 !」という表示が追加 される。 現在作業中のブランチがいずれであるか、また、作業フォルダに未コミットのものが散在しているかどうかがすぐにわかるので、安心して作業することができて、大変役に立つのだ。 実は Git Bash でも現在のブランチ名がプロンプトに表示される。 しかし、PowerShell のような「+1 ~0 -0 !」といった簡易ステータス表示はついていない。 簡易ステータス表示の変遷さて作成した index.html をリポジトリに追加してコミットしよう。「git add <tab>」で「git add index.html」に補完されるので Enter して実行。 (ちなみにファイル名の補完は Posh-Git の特典ではなく cmd.exe ですら備えている CUI シェルとしての標準機能 )。 この段階でプロンプトの簡易ステータス表示は 緑の「+1 ~0 -0」に切り替わり、 リポジトリのインデックスにステージングされていなファイルはないことを示してくれる。 あとは「git co <tab>」で「git commit」に補完、続けて「 -m "1st commit."」とコミットログのオプションを書き足して Enter すればコミット完了だ。 入力補完再びさてちょっと試しに共有リポジトリにプッシュしてみよう。先に GitHub の gist 上に Private Gist を作成しておき、その Clone URL を入手して、「git remote add gist ~」で「gist」という名前のリモートリポジトリとして登録しておく。 いよいよプッシュ。 「git push 」とまで入力して、ここで Tab を押すと... 「git push gist」と、 登録済のリモートリポジトリの名前が補完 されるのだ! さらにスペースを開けて Tab を押すと... 「git push gist topic1」と、 ブランチ名も補完 されるのだ! このように入力補完は Git のコマンドのみならず、リモートリポジトリ名やブランチ名についても機能する。 まだまだプロンプトさて、先ほどはリモートリポジトリへのプッシュにあたり、-u オプションを付け忘れていた。今一度「git push -u gist topic1」を実行して追跡するようにしておく。 さてこの状況下で、さらに何かひとつ、ファイルを追加してみよう。 Gravator からアイコンを curl コマンドでダウンロードして作業フォルダに myicon.png として保存。 これをローカルリポジトリに追加 & コミットする。 するとどうだろう。 プロンプトの表示色がさらに変化して緑色 になるのだ。 続けてリモートリポジトリへのプッシュを実行し、ローカルリポジトリと追跡中のリモートリポジトリが同期すると、 プロンプトは元の水色に戻る。 結論msysGit のインストールで付属してくる Git Bash と比べると、PowerShell + Posh-Git ははるかに強力でわかりやすく便利だ。もっとも、私は Bash シェルの知識と経験がないのでわかってないだけかもしれないが。 とはいえ、知識なくともすぐにこれだけの便利さを享受できる PowerShell + Posh-Git は、Windows OS で Git を CUI から使う場合は、利用しない手はない。 インストール方法最後に Posh-Git のインストール方法を。GitHub for Windows実は GitHub 用の Windows OS 向け GUI クライアント「GitHub for Windows」をインストールすると、Posh-Git 込みの PowerShell 環境が一緒にインストールされる。GitHub for Windows をインストールすると、デスクトップになにやらショートカットアイコンができたと思うが、そのアイコンのひとつ、「Git Shell」と書かれているのがそれだ。 たぶん、GitHub for Windows をインストールするのが、PowerShell + Posh-Git をいちばん簡単に手に入れる方法だと思う。 正攻法に手動でインストールただし、Posh-Git が有効な PowerShell を開くには常にこの「Git Shell」ショートカットから始めねばならない模様。しかし PowerShell を開いたら常にいつでも、Posh-Git が有効であってほしいケースも多いと思う。 Windows8 では、エクスプローラから現在開いている・選択しているフォルダで PowerShell を容易に開くことができるようになったのでなおさらだ(下図は Quick Access Toolbar をカスタマイズした自分の PC のエクスプローラの様子)。 詳しくは割愛するが、Posh-Git は GitHub で公開されているので、Git を使って自分の PC に GitHub 上の Posh-Git の公開リポジトリをクローンし、手に入れたファイル一式のなかの install.ps1 を実行すればよい。 Posh-Git https://github.com/dahlbyk/posh-git Chocolateyあと、自分は試してないので詳しくは書けないが、「Chocolatey」という Windows 向けのパッケージマネージャあるので、これを使うとよいかもしれない。Chocolatey http://chocolatey.org/ 上記ページを見れば Chocolatey のインストールは難しくないと思う(ちなみに、Chocolatey のインストールも PowerShell スクリプトだ)。 Chocolatey をインストール完了すると、「cinst」というコマンドが使えるようになる。 「cinst poshgit」とコマンドプロンプトか PowerShell から実行すれば、それでインストールできるっぽい。 ちなみに、Windows 用の curl コマンドは、Chocolatey を使って「cinst curl」でインストールした。 おまけ - Mercurial な人は?実はPosh-HG というものも見つけた。 Chocolatey で「cinst Posh-HG」で Mercurial 本体もろとも一緒に簡単にインストールできた。 Posh-HG http://chocolatey.org/packages/Posh-HG Mercurial 自体、よくは知らないので詳しいことは書けないが、どうやら今回紹介した Posh-Git 並に、各種補完やプロンプトによるステータス表示がなされるようだ。 Mercurial ご愛用の方はご参考まで。
by developer-adjust
| 2012-12-02 00:00
| その他IT系
|
Comments(0)
|
ファン申請 |
||