本記事はMinecraft JEのサーバー管理システムであるServer Starterの連載記事として執筆しています。
一部ShareWorldなど特殊な単語を用いていますが、興味のある方はこちらも見て頂けると嬉しいです。
大前提
Gitではレポジトリ内において変更を行った場合、commit
と呼ばれる作業を行うことにより、変更を保存しておくことができます。
このため、各変更を保存したcommitのタイミングまでデータを戻すことも可能であり、branchの機能と合わせて、共同開発などで多く利用されています。
しかし、当然のことながらGitはcommitしたところを区切りとしてしか戻すことはできないことになっています。
変更を行ってもしばらくcommitしていなかった場合は希望の時点に戻すことは難しいかもしれません。
復旧先を確認
レポジトリ(今回はShareWorldとします)が含まれているフォルダにカレントディレクトリを移動します。
その後、レポジトリを最新の状態にするためにリモートレポジトリを活用している方はpull
をしておきます
cd ..../ShareWorld (絶対パス or 相対パスで指定します)
git pull
git log
と打つことにより今までのcommit一覧が表示されるため、戻したいcommitのcommit番号(b977060fa95590dd74222b81cef5332a0128d49b
のように書かれているところ)をメモ(コピーする)
$> git log
commit b977060fa95590dd74222b81cef5332a0128d49b (HEAD -> master)
Author: UserName <E-mail Address>
Date: Mon Jan 1 00:00:00 0000 +0900
--Commit Message--
commit 98f895cbca9e92262a8fadb72109d06ee332141c
Author: UserName <E-mail Address>
Date: Thu Jan 2 00:00:00 0000 +0900
--Commit Message--
:
実際に元のデータを取得してみる
下準備は終わったため、実際にかつてのcommit時点にデータを復旧してみる。
最新のレポジトリデータを保持しておき、復旧データと比較する場合は、レポジトリフォルダを別名でコピーしておき、そのコピー先のフォルダ内で復旧作業をするようにしてください。
branchを使いこなせるGit上級者の方はこんなことをする必要はありませんが、初心者の方は着実な作業のためにコピーしておくことをお勧めします。
復旧作業をするフォルダにカレントディレクトリを設定したのち、以下のコマンドを打ち込み、データを復旧してみます。
git checkout (調べたcommit番号)
git checkout master <------------ これは元のレポジトリでそのまま復旧作業を行っている場合は打つ必要のあるコマンド
細かいコマンドの内容が知りたい方はクリックしてください。
今回はレポジトリ内でbranchをもとのブランチから一度抜けて復旧データのbranchを新規作成しています。
新規作成した復旧データが入っているbranchで作業を続けるわけではない場合、そのbranchに居続ける必要性はないため、mainのbranchに戻るコマンドを打ち込んでいます。
そのため、branchを使いこなすことができる場合は復旧データからの編集とメインの編集を並行して行い、区切りの良いところでbranchを統合するといった使い方も可能ですが、そちらはこの記事の趣旨とは離れるため、ここでは触れません。
コマンドを打ち込んだのちに、フォルダを確認して、データが元に戻っていれば成功です。
復旧データを反映する
復旧データを活用して元の最新データを編集した場合、その変更を保存しておく必要があります。
以下のコマンドを入力して、変更を保存しておきましょう。
git push
はリモートレポジトリを使用している方のみ入力の必要があります。
git add -A
git commit -m "Commit Message"
git push
最後にgit status
と入力して、特にエラーが生じていなければ、作業終了です。