Gitで「やっちまった。。(涙目)」な、経験はありませんか?
覚えやすいように以下でまとめました(@YuneKichiさん感謝)。
git commit前は git restore
git commit後は git reset
push前
何を取り消す? | コマンド | 備考 |
---|---|---|
ローカルの変更 | git restore ファイル名 | |
git add | git restore -S ファイル名 | -S は、--staged の略 |
直前のgit commit → staged状態 | git reset --soft HEAD^ | |
直前のgit commit → add前の状態 | git reset HEAD^ | デフォで --mixed 指定 |
直前のコミットでローカルの変更も取り消し | git reset --hard HEAD^ |
push後
履歴を残さずコミットを取り消す
コミットを取り消して、再度pushすれば OK
ただ、コミット先が他の人もコミットする環境では、不整合が生じる可能性があります。
正直に報告(=ゴメンナサイ)しましょう。
git reset --soft HEAD^ (--の指定は上記を参照)
git push -f コミット先指定 (以前のコミットとコンフリクトするので -f を付ける)
複数のコミットを取り消したい場合は、HEAD^
の後に数を指定する。
例: HEAD^3
3つ前まで戻す(=2つ取り消し)
履歴を残す場合は、取り消しコミットを作成
git revert HEAD
(コミットメッセージを編集)
git push コミット先(リモート)を指定