Git

Gitで特定のコミット状態に戻してリモートリポジトリに反映してみた

Gitで誤ってリモートリポジトリにコミットしてしまった場合、以下のサイトに記載されている「git reset --hard ハッシュ値」や「git push -f origin master」コマンドを利用することで、コミットの取消を行うことができる。
https://naomi-homma.hatenablog.com/entry/2020/08/09/120602

今回は、Gitで特定のコミット状態に戻してリモートリポジトリに反映してみたので、その手順を共有する。

前提条件

下記記事の手順を、リモートリポジトリ名=git-commit-revert-pushとして実行済であること。

Gitでプロジェクトを作成しGitHubにpushしてみたGitとは、プログラムのソースコードなどをバージョン管理するためのツールで、多くの開発現場で利用されている。 また、Gitで管理し...

やってみたこと

  1. コミット履歴の確認
  2. コミット操作(2回)の実行
  3. コミット操作(1回目)に戻す操作の実行と確認

コミット履歴の確認

前提条件に記載した操作を行った後で、コミット履歴を確認した結果は、以下の通り。

1)「git log」コマンドで、ローカルリポジトリのGitコミット履歴を確認した結果は以下の通りで、1回分のコミット履歴が確認できる。
コミット履歴の確認_1

2) GitHub上で、リモートリポジトリのコミット履歴を確認するために「1 commit」をクリックした結果は以下の通りで、ローカルリポジトリと同様の1回分のコミット履歴が確認できる。
コミット履歴の確認_2_1

コミット履歴の確認_2_2
サラリーマン型フリーランスSEという働き方でお金の不安を解消しよう先日、「サラリーマン型フリーランスSE」という働き方を紹介するYouTube動画を視聴しましたので、その内容をご紹介します。 「サ...

コミット操作(2回)の実行

コミット操作の取消を確認するため、コミット操作(2回)を実行し、リモートリポジトリに反映する。その手順は、以下の通り。

1) ローカルリポジトリ上で、以下のファイル(add_file_1.txt)を追加する。
コミット操作の実行_1_1

追加したファイルをGit Bash上で確認した結果は、以下の通り。
コミット操作の実行_1_2

2) 追加したファイル(add_file_1.txt)を、「git add .」「git commit -m (コミット時のメッセージ)」コマンドを利用して、ローカルリポジトリにコミットする。
コミット操作の実行_2

3) ローカルリポジトリ上で、以下のファイル(add_file_2.txt)を追加する。
コミット操作の実行_3_1

追加したファイルをGit Bash上で確認した結果は、以下の通り。
コミット操作の実行_3_2

4) 追加したファイル(add_file_2.txt)を、「git add .」「git commit -m (コミット時のメッセージ)」コマンドを利用して、ローカルリポジトリにコミットする。
コミット操作の実行_4

5)「git push origin master」コマンドを利用して、ローカルリポジトリの内容をリモートリポジトリに反映する。
コミット操作の実行_5

6)「git log」コマンドで、ローカルリポジトリのGitコミット履歴を確認した結果は以下の通りで、3回分のコミット履歴が確認できる。
コミット操作の実行_6

7) GitHub上で、リモートリポジトリのコミット履歴を確認した結果は以下の通りで、ローカルリポジトリと同様の3回分のコミット履歴が確認できる。
コミット操作の実行_7



Code VillageはJavaScriptを中心としたサポート体制が充実したプログラミングスクールだったJavaScriptや、JavaScriptのフレームワーク「React」「Vue」を中心にオンラインで学習できるプログラミングスクール...

コミット操作(1回目)に戻す操作の実行と確認

コミット操作(1回目)に戻す操作を実行し確認した結果は、以下の通り。

1)「git reset --hard (コミットID(先頭7桁以上))」コマンドを実行することで、以下のように、指定したコミットIDに戻ることが確認できる。
コミット操作の取消_1

なお、「git reset --hard (コミットID)」コマンドについては、以下のサイトを参照のこと。
https://qiita.com/developer-kikikaikai/items/e62c912702a28ab07360

また、戻したコミットを取り消すには、「git reset --hard ORIG_HEAD」というコマンドを実行すればよい。
https://gist.github.com/tiijima/8f5790fadc04f5fce403

2) 上記コマンド実行後に、Git Bash上で確認した結果は以下の通りで、コミットを取り消したファイル「add_file_2.txt」が削除されていることが確認できる。
コミット操作の取消_2

3) ローカルリポジトリの内容をリモートリポジトリに反映する処理は、以下のように、「git push origin master」コマンドだと上手くいかない。
コミット操作の取消_3

4) 強制的に反映する「-f」オプションを付与し「git push -f origin master」コマンドを利用することで、以下のように、ローカルリポジトリの内容をリモートリポジトリに反映することができる。
コミット操作の取消_4

5) GitHub上で、リモートリポジトリのコミット履歴を確認した結果は以下の通りで、ローカルリポジトリと同様に、3回分のコミット履歴が取り消されていることが確認できる。
コミット操作の取消_5

要点まとめ

  • Gitでローカルリポジトリを特定のコミット状態に戻すには、「git reset --hard ハッシュ値」コマンドを利用すればよい。
  • Gitで特定のコミット状態に戻してリモートリポジトリに反映するには、git pushコマンドを「-f」オプションを付与して実行すればよい。