git pullしたら何故かファイルが無くなっておりビルドが通らなくなった」ということが過去にあり、その時に調べた方法です。一部変えれば削除だけでなく追加も調べられるのでついでに。

(追記)以下のようなことをしなくても削除コミットは、

git log 

だけで調べられます。この時1番最初に出てきたログが削除コミットです。
<relative-filepath>はリポジトリルートからの相対パスが入ります。

  1. 削除コミット

  2. 追加コミット

削除コミット

for h in $(git log --no-merges --format="%H" -- )
do
  if test $(git show $h --name-only --format="" --diff-filter D | grep )
  then
    echo $h
    break
  fi
done
# あれば `cfb0099a5ea07f474bbe197783d96ac5294d85dd` のようなコミットハッシュ

2つある<filename>へは削除されたファイル名の相対パスを書きます。

このスクリプトの本体は大体、

git show  --name-only --format="" --diff-filter D | grep 

を繰り返し実行してることになります。

この1行は<commit-hash>のコミットで削除されたファイルの中から<filename>なものがあるか調べるコマンドです。show--diff-filter Dを追加するとそうした削除したファイルのみを表示させることができます。
また--name-onlyを付けてファイル名だけ、--format=""で、

commit 
Author: 
Date:   

のようなヘッドが出力されないようにしてます。

対象のファイルが出現したタイミング(削除されたコミット)を見つけると、そのコミットハッシュを表示して処理を終わります。そして見つけたコミットはgit show <commit-hash>でじっくり眺めることができます。

追加コミット

--diff-filterはファイルの状態で絞り込むオプションです。例えば削除ならD、追加ならA、変更ならMのように指定します。

もう大体お分かりのように追加コミットを調べるには--diff-filterAに変更するだけです。

for h in $(git log --no-merges --format="%H" -- )
do
  if test $(git show $h --name-only --format="" --diff-filter A | grep )
  then
    echo $h
    break
  fi
done
# あれば `cfb0099a5ea07f474bbe197783d96ac5294d85dd` のようなコミットハッシュ

JavaScript で飯食べたい歴約 5 年、 純( nju33 ) によるノートサイトです。

このサイトではドリンク代や奨学金返済の為、広告などを貼らせて頂いてますがご了承ください。

Change Log