gitを使って作業していく中で、gitで誤ってコミットしたものを元に戻したい場合などが発生します。
目次
1.コミット履歴の確認
その場合ですが、まずは、「git reflog」で過去のコミット履歴を確認します。
$ git reflog
6e7c376 HEAD@{0}: commit: third commit
717c754 HEAD@{1}: commit: second commit
3f7b530 HEAD@{2}: commit: first commit
2.コミットを戻す方法
このようにして確認した中で、何段階か前のコミットに戻したい場合には、
$ git reset --hard [リセットしたいコミットID]
を使用します。
たとえば、1つ前のコミットのHEAD@{1}に戻したい場合には、
$ git reset --hard HEAD@{1}
とすることで、その時点のコミットに戻すことができます。
--hardの部分はオプションですが、種類としては、
--hard:コミット、ワーキングエリア、ワーキングツリーとも取り消される
--mixed:コミット、ステージングエリアが取り消される(ワ-キングツリーはそのまま)
--soft:コミットする直前に戻る(ワ-キングツリー、ステージングエリアはそのまま)
があります。
「git reset」はコミット履歴には残らないため、リモートリポジトリに「git push」して既に公開しているものに対して行うと、存在するはずのコミットがなくなって不整合が生じ他のメンバーなどがコミットできなくなってしまいます。
そのため、できるだけ「git push」前のローカル側にある時に使うようにします。
3.誤ってリセットした時の対処方法
また、誤って、「git reset」してしまった時は、「git reset」で元に戻すことができます。
まずは、「git reflog」で過去のコミット履歴を確認します。
$ git reflog 1f3c187 HEAD@{0}: reset: moving to 1f3c187
3a6e528 HEAD@{1}: commit: second commit
27d5a20 HEAD@{2}: commit: first commit
戻したい履歴の場所を確認して「git reset」を再度実行します。
$ git reset --hard HEAD@{1}
これによって、HEAD@{0}のresetの前に戻すことができます。
4.コミットを戻すもう1つの方法
もう1つ元に戻す方法としては、「git revert」というものがあります。
こちらはgitに履歴が残るため「git push」した後でも使えます。
$ git revert [リセットしたいコミットID]
コミットIDの確認には、「git log」も使用します。
以上がコミット履歴の確認とコミットを元に戻す方法になります。
また、Git、GitHubについてのインストール、設定やいろいろなやり方についてこれまで記載してきた記事を一覧として以下にまとめましたのでよかったらご参照ください。
わかりやすい本を手元に置いて読みながらやっていきたいという方には以下に初心者、初級者へのおすすめの入門書を記載していますのでよかったら参考にしてください。
関連記事:
【Git】Gitのダウンロード、インストール方法 - Django Girls and Boys 備忘録
【Git】付属ツールGit Bashについて、起動方法 - Django Girls and Boys 備忘録
【Git】Git Bashのホームディレクトリ変更方法 - Django Girls and Boys 備忘録
【Git GitHub】初心者、初級者におすすめの入門書 - Django Girls and Boys 備忘録
【Python Django】git init について - Django Girls and Boys 備忘録
【Git】ユーザー名とメールアドレスの設定方法 - Django Girls and Boys 備忘録
【Git】git addとステージングエリア(インデックス)への登録について - Django Girls and Boys 備忘録
【Git】git commitとローカルリポジトリへの登録、gitの概略イメージ - Django Girls and Boys 備忘録
【Git】git diffによる差分確認について - Django Girls and Boys 備忘録
【Git GitHub】GitHubのアカウント作成方法 - Django Girls and Boys 備忘録
【Git GitHub】公開鍵の設定方法 - Django Girls and Boys 備忘録
【Git GitHub】Gitのダウンロード、インストールから「git add」、「git commit」によるGitへの登録までの一通りの方法 - Django Girls and Boys 備忘録
【Git GitHub】「git add」、「git commit」後の「git push」について、リモートリポジトリにプッシュする方法 - Django Girls and Boys 備忘録
【Git GitHub】プルリクエストとマージを実行する方法 - Django Girls and Boys 備忘録
【Git GitHub】リモートリポジトリをクローンする方法 - Django Girls and Boys 備忘録
【Git GitHub】コミット履歴の確認とコミットを元に戻す方法 - Django Girls and Boys 備忘録
【Django】Djangoでのhtml(javascript)側からpython(views.py)側へ値を送る時の方法の一例 - Django Girls and Boys 備忘録