差分ファイルだけ抜き出したい! Git Bashのコピペ用コマンド

バージョン管理システムとしてGitを良く使うのですが、いかんせんコマンドを打つのが苦手なもので、クライアントはSourceTreeを使っています。
そこでちょっと困ったのが、差分ファイルの抽出方法。
[カスタム操作]という機能を利用すればよいらしいのですが、なんか…よく分からない……
PCの前で遠い目をしていた私に、現場のやさしい人が教えてくれました。

「Git Bash使えばいーーーじゃん!」

というわけで、コピペでGO! Git Bashコマンド[差分抽出編]の始まりです。

例によって環境はWindows7以降を想定しています。

■Git Bashとはなんぞ??
Git for Windowsをインストールすると使えるようになる、コマンドでgitの操作をすることが出来るターミナルのこと。
普段からコマンドプロンプトをカタカタ言わせている人たちにはおなじみのUIですが、それ以外の人たちには敷居の高さを感じさせるであろうツールです。
実際、私も使ったことはなかったですし、これから先もGitの差分抽出以外では使わないこと濃厚ではあります。

それはさておき、肝心のコマンドです。

ここでは例として、C:\git 配下に、gitで管理されているディレクトリ(仮名:test)があり、作業ブランチ(仮名:work)とmasterとの差分を、任意のディレクトリ(仮名:result)に取りたいものとします。
まずSourceTreeなどで、作業ブランチに移動して置いてください。

■コマンド
差分を抽出したいディレクトリを作ります。
(もちろん、任意の場所で右クリックして作成してもOKです!)

・差分抽出用ディレクトリ作成
mkdir /c/result

作る場所はどこでも良いのですが、ここではとりあえずCドライブ直下に作成しました。
続いて、カレントブランチに移動します。

・カレントブランチに移動する
cd /c/git/test

正しく移動できればGit Bash上に、/c/git/test (work)と、自分が今いるブランチが表示されるハズ。
それでは、差分をテキストに書き出してみます。

・masterとの差分をテキストファイルで書き出す
git diff -w -b master –name-only > /c/result/files.txt

resultフォルダの中に、files.txtという名前で差分がダラーッと一覧で書き出されます。
最後に、files.txtを使って差分ファイルを抽出しましょう!

・ファイル一覧テキストを利用して差分ファイルを抽出する
git checkout-index –prefix=/c/result/ –stdin < /c/result/files.txt

これで、resultフォルダの中に作業ファイルがディレクトリ階層ごとコピーされました。
あとは、このファイルを煮るなり焼くなり上げるなり下げるなりすればOK!

簡単ですね!!

ついでなので、抽出した差分ファイルをツリー構造でtxtに書き出す方法もご紹介。
Git Bashではなく、コマンドプロンプトを使います。
コマンドプロンプトの起動方法は、PCのスタートメニュー→プログラムとファイルの検索に「cmd」と打ち込めば、cmd.exeというものが出て来ますので、それをダブルクリック。

それではコマンドです。
Cドライブ直下の「result」フォルダ内の階層構造を、「tree.txt」に書き出す場合はこんな感じ。

・任意のディレクトリ配下をツリー構造でテキストに書き出す
tree /f C:\result > C:\result\tree.txt

出来上がったtree.txtの中に、こんな感じで階層構造が書き出されます。

(画像:Web_岡田_02_tree.gif)

ファイル同士がどの位置にいるのか一目瞭然なので、パスのチェックなどをする時に便利です。

とりあえず、自分が業務で頻繁に使っているコマンドをご紹介しました!
本当は、ターミナルだけで一通り出来るようになると便利なんですけどね。
それを覚えるには、脳のキャパシティが足りないのです……

Posted in サービス/ツール.