[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.

いしかわ

まだまだ広く浅く勉強中のエンジニア。得意分野はラーメン。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>