これまで、Gitでローカルのファイルをリモートリポジトリに反映するコマンドとして、git addコマンド、git commitコマンド、git pushコマンドを利用してきたが、これらのコマンドは取り消すことができる。
今回は、git addコマンド、git commitコマンド、git pushコマンドを取り消してみたので、その手順を共有する。
前提条件
下記記事の手順を、リモートリポジトリ名=git-command-cancelとして実行済であること。
また、下記記事の手順の「featureブランチの作成」までの手順を、リモートリポジトリ名=git-command-cancelとして実行済であること。
やってみたこと
git addコマンドの取り消し
git addコマンドの取り消しは、git resetコマンドによって行える。その確認手順は、以下の通り。
1) 今いるブランチがfeatureブランチであることを確認後、Javaソースのファイル「DemoUtilNg.javaファイル」が存在することを確認する。
2) 「DemoUtilNg.javaファイル」を削除し、削除されたことを確認する。
4) Git GUIを確認し、「DemoUtilNg.javaファイル」の削除がインデックスされていることを確認する。
5) git resetコマンドを実行し、git addコマンドの実行結果を取り消す。
6) Git GUIを確認し、「DemoUtilNg.javaファイル」の削除がインデックスされていないことを確認する。
7) 「DemoUtilNg.javaファイル」の存在を確認すると、ファイルは削除されたままであることが確認できる。
git commitコマンドの取り消し
git commitコマンドの取り消しは、「git reset –soft HEAD^(2回目以降のコミット取消)」または「git update-ref -d HEAD(1回目のコミット取消)」コマンドによって行える。その確認手順は、以下の通り。
1) 今いるブランチがfeatureブランチであることを確認後、Javaソースのファイル「DemoUtilNg.javaファイル」が削除されていることを確認する。
2) git addコマンドでインデックス後、git commitコマンドでコミットする。
3) 「DemoController.javaファイル」を更新する。
(更新前)
4) git addコマンドでインデックス後、git commitコマンドでコミットする。
5) Git GUIでコミットログを確認した結果、以下の通り。
6) 「git reset –soft HEAD^」を実行し、2回目のコミットログを削除する。
7) Git GUIでコミットログを確認すると、以下のように、2回目のコミットログが削除されたことが確認できる。
8) 「git update-ref -d HEAD」を実行し、1回目のコミットログを削除する。
9) Git GUIでコミットログを確認すると、以下のように、1回目のコミットログが削除されたことが確認できる。
git pushコマンドの取り消し
git pushコマンドの取り消しは、「git push -f (リモート名) (戻したいコミットのID):(ブランチ名)(2回目以降のコミット取消)」または「git push –delete (リモート名) (削除したいブランチ名)(1回目のコミット取消)」コマンドによって行える。その確認手順は、以下の通り。
1) 今いるブランチがfeatureブランチであることを確認後、Javaソースのファイル「DemoUtilNg.javaファイル」が削除され、「DemoController.javaファイル」が更新されていることを確認する。
2) git addコマンドでインデックス後、git commitコマンドでコミットする。
3) git pushコマンドで、リモートブランチにコミット内容を反映する。
4) 「src/test」フォルダ下のテストソースを追加する。追加後の確認結果は以下の通り。
5) git addコマンドでインデックス後、git commitコマンドでコミットする。
6) git pushコマンドで、リモートブランチにコミット内容を反映する。
7) リモートリポジトリの更新ログの確認結果は、以下の通り。
また、「git log」コマンドで更新ログを確認した結果は、以下の通り。
8) 「git push -f origin (戻したいコミットのID):(ブランチ名)」を実行し、2回目のコミットログを削除する。なお、「戻したいコミットのID」は、「git log」コマンド実行時に表示されていた1回目のコミットIDで、「7cc9c641a2bb82f69ca0cb5339bbcf553bc7c5cc」となる。
9) 2回目のコミットログを削除後の、リモートリポジトリの更新ログの確認結果は、以下の通り。
10) リモートリポジトリからブランチを削除するには、「git push –delete (リモート名) (削除したいブランチ名)」コマンドを実施する。
11) リモートリポジトリを確認すると、featureブランチが削除されていることが確認できる。
要点まとめ
- 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回目のコミット取消)」コマンドによって行える。