目次

編集内容を取り消したい(addする前)

git checkout [ファイル名]ファイル名のところを.にすると、ステージング前の全ての変更内容がなくなる。

ステージングを取り消したい

git reset [ファイル名] ステージングを取り下げる。編集内容は残るファイル名を指定しないと全てのステージングが取り下げられる。

git checkout HEAD -- [ファイル名]ステージしたファイルを最後にコミットした状態に戻すつまり編集内容は残らない。

git reset --hard HEAD編集・ステージングいずれの変更内容を取り消し、最後にコミットした状態に戻す

checkoutとresetの違いを説明しようとするとそれだけで記事が1つ書けそうなので今回はやりません。ただざっくりとだけ説明すると、大きく分けて違いは二つ

上の説明の図があります。7.7 Git のさまざまなツール - リセットコマンド詳説

コミットのバージョンを戻したい

git reset --hard [コミットid]コミットidはgit logコマンドで調べて、戻りたいコミットのidを指定してあげる。

※非推奨(個人的に)git revert [コミットid]

reset --hardが戻った以降のコミットをなかったことにする(コミットログが消える)のに対して、revertはコミットログを残したまま戻る。そのままpushしたりmergeされたりすると、反映されていない変更履歴が残ってしまい、メンバーを混乱させることがある。不要になったコミット履歴に気をつけましょう。