1. ホーム
  2. Git

git reset --hardとgit reset --softの違いについて

2022-02-21 02:20:26

間違ったコミットをしたけれどもまだリモートブランチにプッシュしていない場合、このコミットを元に戻したいときには git reset --soft/hard コマンドを使います。
1. 両者の違い

git reset --soft: あるバージョンにフォールバックし、コミット情報のみ、インデックスファイルレベルにはリストアされません。それでもコミットしたい場合は、そのままコミットしてください。
git reset --hard: あるバージョンに完全に戻し、ローカルソースを以前のバージョンに変更し、取り消したコミットに含まれる変更をフラッシュアウトします。

2. 具体的な使い方は以下の通りです。

git log コマンドを使用して、すべてのローカルコミットを見ることができます。

さて、最後のコミット、上の画像にある "OTMS-25838: rollback the modification in OrderDto" のコミットを取り消したいと思います。
(1) git reset --hardの例。

git reset --hard 1c38838ad39b396e271cb10e2146a1d673b4a2b9 コマンドを使用して、制定されたバージョン番号以前のすべてのコミット(このコミットは含まれない)を取り消します。

注意:上記のコマンドを正常に実行した後、ロールバック前のバージョン状態に完全に戻り、新たに発生した変更は失われます。発生した変更の一部ですが、変更部分のフォルダに未コミットのファイルが存在すると、ディレクトリが空でなくなり削除に失敗する場合がありますので、自分で処分する必要があります。

(2) git reset --softの使用例。

現在のブランチの最後のコミットで見える初期化状態は、初期化ページをデバッグする

このコミットを取り消すには、git reset --soft を使用します。

コミットがキャンセルされただけで、コードの変更はキャンセルされていないことがおわかりいただけると思います。