Git

Gitコマンド操作の取り消しをしてみた

これまで、Gitでローカルのファイルをリモートリポジトリに反映するコマンドとして、git addコマンド、git commitコマンド、git pushコマンドを利用してきたが、これらのコマンドは取り消すことができる。

今回は、git addコマンド、git commitコマンド、git pushコマンドを取り消してみたので、その手順を共有する。

前提条件

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

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

また、下記記事の手順の「featureブランチの作成」までの手順を、リモートリポジトリ名=git-command-cancelとして実行済であること。

Gitでブランチを利用して並行開発してみたGitでは、ブランチを利用することで、並行開発を行うことができる。今回は、ブランチを新規作成し、新規作成したブランチ上でファイルの追加・...



やってみたこと

  1. git addコマンドの取り消し
  2. git commitコマンドの取り消し
  3. git pushコマンドの取り消し

git addコマンドの取り消し

git addコマンドの取り消しは、git resetコマンドによって行える。その確認手順は、以下の通り。

1) 今いるブランチがfeatureブランチであることを確認後、Javaソースのファイル「DemoUtilNg.javaファイル」が存在することを確認する。
git_addコマンドの取消_1

2) 「DemoUtilNg.javaファイル」を削除し、削除されたことを確認する。
git_addコマンドの取消_2

3) git addコマンドを実行する。
git_addコマンドの取消_3

4) Git GUIを確認し、「DemoUtilNg.javaファイル」の削除がインデックスされていることを確認する。
git_addコマンドの取消_4

5) git resetコマンドを実行し、git addコマンドの実行結果を取り消す。
git_addコマンドの取消_5

6) Git GUIを確認し、「DemoUtilNg.javaファイル」の削除がインデックスされていないことを確認する。
git_addコマンドの取消_6

7) 「DemoUtilNg.javaファイル」の存在を確認すると、ファイルは削除されたままであることが確認できる。
git_addコマンドの取消_7



git commitコマンドの取り消し

git commitコマンドの取り消しは、「git reset –soft HEAD^(2回目以降のコミット取消)」または「git update-ref -d HEAD(1回目のコミット取消)」コマンドによって行える。その確認手順は、以下の通り。

1) 今いるブランチがfeatureブランチであることを確認後、Javaソースのファイル「DemoUtilNg.javaファイル」が削除されていることを確認する。
git_commitコマンドの取消_1

2) git addコマンドでインデックス後、git commitコマンドでコミットする。
git_commitコマンドの取消_2

3) 「DemoController.javaファイル」を更新する。
(更新前)
git_commitコマンドの取消_3_1

(更新後)
git_commitコマンドの取消_3_2

4) git addコマンドでインデックス後、git commitコマンドでコミットする。
git_commitコマンドの取消_4

5) Git GUIでコミットログを確認した結果、以下の通り。
git_commitコマンドの取消_5

6) 「git reset –soft HEAD^」を実行し、2回目のコミットログを削除する。
git_commitコマンドの取消_6

7) Git GUIでコミットログを確認すると、以下のように、2回目のコミットログが削除されたことが確認できる。
git_commitコマンドの取消_7_1

git_commitコマンドの取消_7_2

8) 「git update-ref -d HEAD」を実行し、1回目のコミットログを削除する。
git_commitコマンドの取消_8

9) Git GUIでコミットログを確認すると、以下のように、1回目のコミットログが削除されたことが確認できる。
git_commitコマンドの取消_9_1

git_commitコマンドの取消_9_2



git pushコマンドの取り消し

git pushコマンドの取り消しは、「git push -f (リモート名) (戻したいコミットのID):(ブランチ名)(2回目以降のコミット取消)」または「git push –delete (リモート名) (削除したいブランチ名)(1回目のコミット取消)」コマンドによって行える。その確認手順は、以下の通り。

1) 今いるブランチがfeatureブランチであることを確認後、Javaソースのファイル「DemoUtilNg.javaファイル」が削除され、「DemoController.javaファイル」が更新されていることを確認する。
git_pushコマンドの取消_1

2) git addコマンドでインデックス後、git commitコマンドでコミットする。
git_pushコマンドの取消_2

3) git pushコマンドで、リモートブランチにコミット内容を反映する。
git_pushコマンドの取消_3

4) 「src/test」フォルダ下のテストソースを追加する。追加後の確認結果は以下の通り。
git_pushコマンドの取消_4

5) git addコマンドでインデックス後、git commitコマンドでコミットする。
git_pushコマンドの取消_5

6) git pushコマンドで、リモートブランチにコミット内容を反映する。
git_pushコマンドの取消_6

7) リモートリポジトリの更新ログの確認結果は、以下の通り。
git_pushコマンドの取消_7_1

また、「git log」コマンドで更新ログを確認した結果は、以下の通り。
git_pushコマンドの取消_7_2

8) 「git push -f origin (戻したいコミットのID):(ブランチ名)」を実行し、2回目のコミットログを削除する。なお、「戻したいコミットのID」は、「git log」コマンド実行時に表示されていた1回目のコミットIDで、「7cc9c641a2bb82f69ca0cb5339bbcf553bc7c5cc」となる。
git_pushコマンドの取消_8

9) 2回目のコミットログを削除後の、リモートリポジトリの更新ログの確認結果は、以下の通り。
git_pushコマンドの取消_9

10) リモートリポジトリからブランチを削除するには、「git push –delete (リモート名) (削除したいブランチ名)」コマンドを実施する。
git_pushコマンドの取消_10

11) リモートリポジトリを確認すると、featureブランチが削除されていることが確認できる。
git_pushコマンドの取消_11

要点まとめ

  • git addコマンドの取消は、git resetコマンドによって行える。
  • git commitコマンドの取り消しは、「git reset –soft HEAD^(2回目以降のコミット取消)」または「git update-ref -d HEAD(1回目のコミット取消)」コマンドによって行える。
  • git pushコマンドの取り消しは、「git push -f (リモート名) (戻したいコミットのID):(ブランチ名)(2回目以降のコミット取消)」または「git push –delete (リモート名) (削除したいブランチ名)(1回目のコミット取消)」コマンドによって行える。