gitで特定のコミットまで状態を戻すにはどうすればいいのか
Railsでtwitterのログイン機能を実装して終わったーと思ってgitのコマンドを打っていたら、 気づくとワーキングツリーの状態がログイン機能実装前の状態に戻っていました。 幸いにも、ログイン機能実装のコミットはBitbucketに残っていたので、 このコミットを使ってワーキングツリーの状態をログイン機能が実装されている状態にしようと思いました。
が、
どうすればgitで特定のコミットまで戻れるのか使いかたが分かっていなかったので、 調べついでにgitに関してもまとめてみました。
特定のコミットまで状態を戻すには
私の場合、戻すコミットが明確だったので、
git reset --hard コミットID
で状態を戻します。
では、この<コミットID>はどこで確認できるのでしょうか。
Bitbucketだったら各コミットに対してそれぞれ7桁のIDが一緒に表示されています。
TOPページからなら、 リポジトリを選択>最近の活動のコミットメッセージの左隣に表示されている7桁。
個別のコミットのページからも確認できます。
もしくはコマンドラインでgit log
と打って確認することもできます。
git log
と打って表示される長いIDの頭7桁がBitbucketで確認できるIDです。
ちなみにgit log
はqと打つと抜けることができます。
gitとは
プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。Linuxカーネルのような巨大プロジェクトにも対応できるように、動作速度に重点が置かれている。gitでは、各ユーザのワーキングディレクトリに、全履歴を含んだリポジトリの完全な複製が作られる。したがって、ネットワークにアクセスできないなどの理由で中心リポジトリにアクセスできない環境でも、履歴の調査や変更の記録といったほとんどの作業を行うことができる。これが「分散型」と呼ばれる理由である。
個人的にRPGゲームのセーブポイントみたいな感覚です。 コミットIDという魔法の呪文を覚えておけば復活できます。
git関連の記事などまとめておきます。