このノートでは、プロジェクトの中のノートやチャートのファイルが壊れてしまってExploratory Desktopから見えなくなってしまったときなどに、gitの履歴から復元する方法を説明します。
Macではターミナル、WinodwsではGit Bashを起動します。 例えば、HowToという名前のプロジェクトを復元したい場合、まず以下のようにExploraotryレポジトリの下にあるprojectsというディレクトリにcd ~/.exploratory/projects
というコマンドで移動します。そして、次にgrepコマンドでHowToというプロジェクト名をキーワードで検索します。
$ ~ cd ~/.exploratory/projects
$ grep HowTo ./*/project.json
./HowTo_hvj9bGH8/project.json: "name": "HowTo",
すると、この例では~/.exploratory/projects/HowTo_hvj9bGH8が復旧したいプロジェクトのディレクトであることが分かりました。
次にこのプロジェクトのディレクトに移動し、どんな変更がプロジェクトにあったかをgit log --all
というコマンドで確認します。
$ cd HowTo_hvj9bGH8
$ git log --all
実行すると、以下のように変更の履歴が日付順に表示されます。
各変更にはcommit IDが振られています。例えばある特定のcommitと、現在状態の差分を見たければ、commit IDの最初の数桁を指定して、git diff <commit ID>
と以下のようにコマンドを実行すると差分を確認できます。
$ git diff 41cf4ba
すると、このようにノートの中身の差分が確認できました。確認が終わったらqとタイプするとこの差分確認モードから抜けることができます。
差分や日付から戻したいcommit IDが決まったら、以下の要領でプロジェクトを復旧します。(復旧はノートやチャートのレベルではなく、プロジェクト単位なので注意が必要です。)
以下のgitのコマンドで念の為にバックアップを取ります。ここではbackup1という名前でバックアップを取得しています。
$ git branch backup1
例えば、41cf4baで始まるcommitに戻したければ、git checkout master
を実行した後に、git reset --hard <commit ID>
を実行すると戻せます。
$ git checkout master
$ git reset —-hard 41cf4ba
以下のように復旧できました。