渋谷ほととぎす通信

「Unityをわかりやすく」初心者のためのゲーム作りブログ

【Sourcetreeではできない】gitで過去に削除したファイルを復活させる方法

【Sourcetreeではできない】gitで過去に削除したファイルを復活させる方法

こんにちは、Unityエンジニアのオオバです。

GitHubでファイル管理するときは
Sourcetreeをオススメしています。

Windows / Mac両OSで対応 していて
且つ 日本語をサポート しているからです。

大抵のことはSourcetreeでできますが、
万能ではありません。

今回は Sourcetreeではできない
過去に削除したファイルの復活方法_ を解説します。

昔の画像を復活させることはときどきありますよね。

「あ〜削除しちゃってた〜」

ご安心ください。ときを戻せるのがgitです。
さあ、過去を救いにいきましょう。

※ターミナルでの作業になるため少し難易度高めです。

削除コミットを見つけてcheckoutする

結論を簡単にまとめます。

  • git logを使って削除したファイルの検索
  • 削除コミットのハッシュを使ってファイルを復活させる

手順は少なくて簡単そうです。
ただし ターミナルを使った作業 のため少し難易度が上がります。

仕事をしていると削除したファイルの復活って、
意外と発生しますよね。

職種問わず覚えておいて損はないです!
がんばって読んでみてください。

では詳しい解説に入ります。

👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

削除したファイルの検索

例として、昔削除したAssets/Images/image.png
復活させるということをやっていきます。

git loggrepコマンドを使って
削除したファイルを検索します。

$ git log --diff-filter=D --summary | grep -B8 【ファイル名】  

文法としてはこちら↑。
【ファイル名】部分に image.pngを指定 します。

$ git log --diff-filter=D --summary | grep -B8 image.png  

実際はこのようなコマンドを実行します。

削除コミットのハッシュが大事

先のコマンドを実行すると、
このように出力されます。

$ git log --diff-filter=D --summary | grep -B8 image.png  
commit 9b3b2f669d83497d1f6bd05ad202ee597e13308a  
Author: ohbashunsuke <shunsuke.ohba@gmail.com>  
Date:   Fri Oct 15 05:12:49 2021 +0900  

    image.pngの削除  
--  

 delete mode 100644 Assets/Images/image.png  
 delete mode 100644 Assets/Images/image.png.meta  
clone-sourcetree$  

この中で重要なのは、こちらです。↓

commit 9b3b2f669d83497d1f6bd05ad202ee597e13308a  

commit 以降の数字と英語の羅列です。
これを コミットハッシュ と言います。
わかりやすく言うと 「作業履歴の場所」 です。

コミットハッシュである
9b3b2f669d83497d1f6bd05ad202ee597e13308aが、
以前image.pngを削除した作業 ということになります。

このコミットハッシュを使って
ファイルの復活をしていきます。

コミットハッシュを使ってファイルを復活させる

削除コミットのハッシュを取得できた時点で
9割作業は完了しています。

あとすこしです。

$ git checkout 削除コミットハッシュ^ -- 復活させたいファイルパス  

こちらのコマンドでファイルを復活できます。

【Sourcetreeではできない】gitで過去に削除したファイルを復活させる方法_0

注意点としては「--(ハイフン2つ)」の前後に
半角スペースが必要です。

$ git checkout 9b3b2f669d83497d1f6bd05ad202ee597e13308a^ -- Assets/Images/image.png  

今回の例であれば↑のコマンドです。
このコマンドを実行すると image.pngは復活します。

^(ハット)漏れに注意

先のコマンドの中でコミットハッシュの後ろに「^」がくっついていました。
これ超大事です。

記号「^」は ハット と呼ばれます。
ハットを記述することで、1つ昔のコミットを指すことになります。

今回検索したのは あくまで削除したコミット
削除する前の状態に戻すためには、
削除したコミットの1つ前の状態にする 必要があるためです。

ハット(^)をつけることで1つ昔のコミットを指すことになり、
削除したimage.pngが復活するということになります。

まとめ : gitで過去に削除したファイルを復活させる方法

記事の内容を簡単にまとめます。

  • 削除したファイルの復活はSourcetreeではできない
  • git logをつかって削除したファイルを検索
  • git checkoutでファイルの復活
  • ハット(^)は1つ過去のコミットを指す

こんな感じです。
仕事の中で 不慮の事故オペミス は起きます。

「だって、人間だもの」

ファイルを復活させたいけど、
Sourcetreeではできない。

そんなピンチで、だれかを救いたいときに
ターミナルを開いてみてはいかがでしょうか。

最初は真っ暗な画面で怖いかも知れないですが、
本記事を見ながら慣れてもらえると、

  • ファイルの復活方法がわかる
  • ターミナルにも慣れる

一石二鳥です。
ぜひターミナルを使ってみて下さい。

「Unity初心者大学」というUnity初心者向けのYouTube始めました!!
ぜひチャンネル登録をお願いします!

最後まで読んでいただきありがとうございました!
すばらしいGitライフをお過ごしください。

オススメ記事