誤ってCommitしてしまった、Pushを取り消したい!といった間違いはGitを使っていると結構あるものです。
今回は、GitでCommit・Pushを取り消しする方法をご紹介します。
ローカルリポジトリとの連携が必要なのでやや大変に感じるかもしれませんが、慣れるとGitの操作がもっと気軽に行えるようになると思います。
この記事の内容
Commit操作の取り消し方法
gitコマンド「git log」を実行すると、現在までのcommit履歴が確認できます。
この直前のメソッド追加のCommitを取り消します。
Commitを取り消す方法は、2通りあるので順に紹介していきます。
方法1:git resetコマンド(履歴が残らない)
「git reset」を実行することで強制的に前のCommitの状態に戻ることができます。ただし、この方法は取消しを行なった履歴が残らない点に注意してください。
- 次のgit resetコマンドを実行すると直前のCommitの状態に戻ります。
git reset --soft HEAD^
- git resetには「–soft」を含め以下の3つのオプションがあります。オプションによって取り消す範囲を柔軟に選択することができます。
- $ git reset –soft
commitのみ取り消す - $ git reset –hard
commit・add・ソースの変更を取り消す - $ reset –mixed
commitとaddのみを取り消す
- $ git reset –soft
- HEAD^は、直前のCommitの指定です。「HEAD^」の部分を任意のコミットIDに変更することによって該当のコミットIDの時点まで戻すことができます。
- git resetには「–soft」を含め以下の3つのオプションがあります。オプションによって取り消す範囲を柔軟に選択することができます。
- 以上でcommitの取り消しは完了です。
gitコマンド「git log」を実行すると、commit履歴が一つ消えたことがわかります。
gitコマンド「git status」を使用しても、変更ファイルに対してcommitを促されるため直前のcommitが消えたことがわかります。
方法2:git revertコマンド(履歴を残して取り消す)
git revertのコマンドを実行すると履歴を残してCommitを取り消すことができます。
- git revertコマンドを実行します。
$ git revert HEAD
- コミットメッセージをvimで編集する画面になります。vimコマンド「:wq」(保存して終了)を入力して終了します。
- 以上でcommitの取り消しは完了です。
gitコマンド「git log」を実行すると、取消履歴が一つ増えたことが確認できます。
Push操作の取り消し方法
GitHubにPushした前の状態に戻すには、上記の「Commit操作の取り消し方法」の後にgit pushコマンドを実行します。
今回は例として、一番上の「メソッドを追加したPush操作(Commit操作も)」を取り消します。
取り消したいソースの内容は以下の部分です。
- git revertコマンドでローカルリポジトリのCommitを取り消します。
$ git revert HEAD
- masterやdevelopなどの共用ブランチの場合は、「git revert」を選んだ方が安全です。他のメンバーのCommitとの競合も発生しにくくなります。
- git pushコマンドを実行してリモートに同期します。
$ git push origin
- GitHub上で、Commitを取り消した作業が追加されました。
GitHub上で該当のソースを見ても、追加したメソッドが取り消されています。
以上、Git Commit・Pushの変更を取り消しする方法でした。
コメント