「reset」でコミットを取り消して無かったことにする
git reset [option][打ち消したいコミットID]
HEADでコミット指定する場合
git reset [option] HEAD^
git reset のオプション
git reset には3種類のオプションがあります。
それぞれ使用するタイミングを間違えないようよく理解して使うようにしましょう。
-
--soft
-
commit
のみ取り消し (HEADの位置のみが修正される) - ディレクトリの内容はそのままでコミットのみを取り消したい場合に使用
-
-
--hard
(最も強力なオプション)- 全部を取り消し(HEADの位置・インデックス・ワーキングツリーが修正される)
- ディレクトリの内容も書き換えコミット取り消したい場合に使用
-
--mixed
-
commit
とadd
の取り消し(HEADの位置・インデックスが修正される) - ディレクトリはそのままで、
git add
を取り消したい場合に使用
-
「--revert」でコミットを打ち消す
git revert [打ち消したいコミットID]
revert
はコミットを打ち消すと言う表現より、逆の内容をコミットしてくれています。
reset
のように取り消すのではなく、「逆向きのコミット」として履歴が残ります。
もし間違えてrevert
したとしても、もう一度revert
し直せば問題ありません
「--amend」で直前のcommitを上書き修正する
git commit --amend
- 「単に直近のコミットメッセージを変更したい」
- 「コミット内容を後から追加したい」
などの場合に使用すると便利
現在の状態をよく確認しよう
間違ったコミットの防止のためにも、自身の編集が完了したらコミットの前に現在の状態を確認しましょう。
-
git status
現在の状態を表示します。変更があったファイルを確認することができます。 -
git diff
ソース内でどのような変更があったのか、差分を確認することができます。 -
git log
コミット履歴を確認することができます。