やっちまったをGITで回避する1ファイルだけ元に戻すいざという時のやり方

GIT便利なんですが、あまり使いこなせていません。
addとcommitとpushぐらいは、ちゃんと行って、必要最低限の運用をしている人も少なくないのではないでしょうか?
もちろん、今や主流のバージョン管理ツールはGITと言い切れるほどですが、いったいどの位までの細部機能を知らないといけないのでしょうか?
Qiitaなどで、gitの小ネタ集を見るたびに、「こうした事を暗記できていないといけないのでは・・・」と少し焦りを感じながらも、「必要な時にググればいいや・・・」という怠惰な自分もいます。
ググればいいんです
実際に、PHPプログラマーがPHPの関数や仕様を全て把握している人は少数派でしょう。
だってみんなリファレンスページをググりながら作業ススメますよね。
もちろん、知っておかないといけないことは沢山ありますが、最近のITを技術なんて、必要最低限だけ知っていれば大体の事ができてしまいます。
おっと、言い過ぎましたが、調べて分かるという事がわかっていればそれでいいんです。
1ファイルだけでいいんです
そして、WEBエンジニアは、こんな事もよくある経験談として誰もが体験したことあると思いますが、
更新していたプログラムやデータが何か変になった・・・
こんな時、誰もが「一旦、正常に動いていた状態に戻して確認したい」と考えるでしょうね。
そんな時、GITを使っていれば、直前のcommitした状態までreset機能で戻せばいいんですが、実は戻したいファイルは1つだけという事の方が多くないですか?
今修正しているこのファイルだけを、直前のcommitに戻せれば、プロジェクト全てを巻き戻すというレベルではないのですね。
他の人と複数人で作業していたとしたら、もっと尚更な感じで、1ファイル戻しはよくある事象なんです。
checkoutなんです
そんな時は”git checkout”で良かったんですね。
ちなみに、僕のよくある事象としては、データファイルを書き込むプログラムを作っている時に、データファイルの中身が真っ白になってしまったとか、想定外の内容に書き換わってしまった・・・という様な場合、
そのデータファイルを一旦、直前commitまで戻すには、以下の手順とコマンドです。
1. まず、戻したいcommitのhash値を調べる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$ git log -n 3 commit a972c803b94ef7878daa3f9908be4076ec757d62 Author: master <master @gmail.com> Date: Tue Oct 24 14:57:51 2017 +0900 hage-hage commit fad193fdc7e4e0f30e5e9590160cb9edab4aabb4 Author: master </master><master @gmail.com> Date: Tue Oct 24 14:12:22 2017 +0900 huga-huga commit b775bfda61ed0d760b8ca78e87d09ddb0c3df9b3 Author: master </master><master @gmail.com> Date: Tue Oct 24 11:20:10 2017 +0900 hoge-hoge </master> |
直前なら-n 1でもいいですが、この辺は適宜かえてください。
2. checkoutする
1 |
$ git checkout a972c803b94ef7878daa3f9908be4076ec757d62 data/output.dat |
git checkout %hash% %path%
“output.dat”が、ちゃんと巻き戻っていることを確認しましょう。
ATOMエディタを使うとファイル名の色で巻き戻ったかどうか判断できるので便利ですよ。
GITの便利さは、巻き戻って初めて知るんです
どうですか、他人が「やっちまった」と言っている場面は笑い話ですが、いざ自分が「やっちまった」場面になると、血の気は引くし、周囲の人からの笑い声が頭の中に反響してきます。
迅速に、且つ、的確に巻き戻せる事は、エンジニアとしては、必須なんですね。
そもそも、データをバックアップする設計にしていない方も悪いんですけどね・・・
でも、GITが使えれば良いんです。
 
え?commitしてなかったって?そんな時は、Dropboxさんにおねだりしてみましょう。