これまで個人で管理していたGitプロジェクトを、先日から複数名のメンバーで共有することになった。

その中で、あるメンバーが誤って必要なファイルを削除し、そのままコミットしてしまった。
※そのコミットデータでは他に多数のファイルを編集している

今回はこのようなケースに遭遇した場合の、ファイルの復元方法を紹介する。

誤った復元方法

俺自身もあまり多人数でGitを使うことがあまりなかったため、まず真っ先に思いついた方法がこれだ。

  1. 前のコミット(ファイルが存在する)にチェックアウト
  2. ファイルをデスクトップに一時的にコピー
  3. 最新のコミットにチェックアウトし、一時的にコピーしておいたファイルをフォルダに保存

これでうまくいくと思っていたが、3で最新のコミットにチェックアウトすると、一時的にコピーしたデスクトップ上のファイルも消えてしまうのだ。

どうやら一度Git管理対象となったファイルは、プロジェクト外のディレクトリへ移動させたとしても追跡状態は変わらないようだ。

SourceTreeを使った復元

よくよく調べてみると、SourceTreeのログ画面に「ファイルの変更を打ち消す」という項目があった。

最新のコミットを選択し、ログに表示されている削除されたファイルを選択。
そして「…」をクリックし「ファイルの変更を打ち消す」を押す。

すると「削除」という変更が打ち消され、ファイルを元の状態に戻すことができる。