git revertを利用すると、コミットを取り消すことが可能です。
関連ページ
git resetでコミットを取り消す[Sourcetree]
git resetでもコミットを取り消すことは可能ですが、revertとの違いは以下のようになります。
resetはコミット自体を履歴から取り消す。
revertは取り消すコミットを履歴に残したまま「取り消すコミット」を新たに生成する。
Sourcetreeの場合
下記画像は、ファイルを生成し、単純にabcと一文字づつ追加していくごとにコミットしていったSourcetreeの様子です。
「cを追加」コミットをrevertによって取り消してみます。右クリックで「コミット適用前に戻す…」を選択します。
「cを追加」コミットは残ったままで、「Revert”cを追加”」といコミットが新しく生成されます。この時ファイルの文字列は「abc」から「ab」になります。
Gitコマンドでおこなう
上述の説明を、Sourcetreeを利用せずにコマンドでおこなってみます。
1 |
git revert 902d387 |
上記コマンド(数値はコミットのID)を実行するとコミットのメッセージを編集する画面に変わります。そのまま保存します。
上記では直近のコミットを取り消しましたが、直近以外のコミットへもrevertすることができます。ただコンフリクトが発生した場合は手動で解決することに注意して下さい。
マージによるコミットをrevertする
下記のようなマージによるコミットをrevertする場合は、コマンドによってのみ可能です。
「-m 1」のオプションを付けて実行します。オプションを付けないとerrorになります。
1 |
git revert -m 1 9bb02f1 |