Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Git GitHub】コミット履歴の確認とコミットを元に戻す方法


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】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】プルリクエスト実施後にThere isn’t anything to compare. master and update_branch are entirely different commit histories.が出た時の対応方法 - Django Girls and Boys 備忘録

 

【Git GitHub】コミット履歴の確認とコミットを元に戻す方法 - Django Girls and Boys 備忘録

 

【Git GitHub】Git、GitHubのダウンロード、インストール、「git add」、「git commit」によるGitへの登録と「git push」、マージによるGitHubのmasterへの反映とクローンまでの一通りの方法 - Django Girls and Boys 備忘録

 

【Django】マイグレーション実行時に「sqlite3.OperationalError: table "**********" already exists」のようなエラーが出た時の対処方法 - Django Girls and Boys 備忘録

 

【Django】Djangoでのhtml(javascript)側からpython(views.py)側へ値を送る時の方法の一例 - Django Girls and Boys 備忘録