[bash] git diff で差分のあるファイルを抽出するスクリプト

git の diff で差分のあるファイルをサーバーにアップロードするため抽出したい。ということがたまにあります。 私はMacを使っているのでbashでスクリプトを作りました。Windowsな方はMacを買ってください。ナンチャッテ。

#!/bin/bash
rm -rf ~/diff_file
echo "以下のファイルを作成しました"
cmd="`git diff --name-only $1 $2`"
for file in $cmd
do
	path=${file%/*}
	mkdir -p ~/diff_file/${path}
	cp $file ~/diff_file/$file
	echo $file
done

■ 全体の流れ
コマンドを実行するときに、.git のあるディレクトリに移動します。コマンドを実行するとホームディレクトリ下にdiff_fileというディレクトリを作成し、ファイルが格納されます。

■ 2行目
~/diff_file を削除します。

■ 4行目
次にgitのdiffコマンドを実行します。
git diff –name-only
とすることにより、差分のあるファイル名のみが出力されます。
$1、$2は引数です。例えば、–cachedや origin/master など引数を2つまで与えら得ます。

■ 5行目
for文の中では、ファイルのpathを取得し、~/diff_fileの中にディレクトリを作成し、その後ファイルをそのディレクトリにコピーすることを繰り返します。

■ 10行目
確認のため、作成したファイルを echo します。

簡単なスクリプトですが、アップロード対象が多い場合には助かりますね!

The following two tabs change content below.

ロゴスウェア

ロゴスウェア株式会社は、インターネットや情報技術を使って学習に革新的進化をもたらす製品を開発することを目標に、2001年7月に設立されたテクノロジー系ベンチャー企業です。

Comments are closed.