こんにちは、Unityエンジニアのオオバです。
GitHubでファイル管理するときは
Sourcetreeをオススメしています。
Windows / Mac両OSで対応 していて
且つ 日本語をサポート しているからです。
大抵のことはSourcetreeでできますが、
万能ではありません。
今回は Sourcetreeではできない
過去に削除したファイルの復活方法_ を解説します。
昔の画像を復活させることはときどきありますよね。
「あ〜削除しちゃってた〜」
ご安心ください。ときを戻せるのがgitです。
さあ、過去を救いにいきましょう。
※ターミナルでの作業になるため少し難易度高めです。
削除コミットを見つけてcheckoutする
結論を簡単にまとめます。
git log
を使って削除したファイルの検索- 削除コミットのハッシュを使ってファイルを復活させる
手順は少なくて簡単そうです。
ただし ターミナルを使った作業 のため少し難易度が上がります。
仕事をしていると削除したファイルの復活って、
意外と発生しますよね。
職種問わず覚えておいて損はないです!
がんばって読んでみてください。
では詳しい解説に入ります。
👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!
削除したファイルの検索
例として、昔削除したAssets/Images/image.png
を
復活させるということをやっていきます。
git log
、grep
コマンドを使って
削除したファイルを検索します。
$ 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 削除コミットハッシュ^ -- 復活させたいファイルパス
こちらのコマンドでファイルを復活できます。
注意点としては「--(ハイフン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ライフをお過ごしください。