コミットのバージョンを戻したりステージングしたものを編集内容ごと取り消したりと 色々戻す方法があるが、戻す時によく忘れるのでメモ。
addする前の編集内容を取り消す
git checkout ファイル名またはgit checkout .
git checkout .は変更内容を全部ないことにしてくれるが、新規追加したファイルに
関しては削除されない点に注意!
1 2 3  |  | 
完全に元に戻したい場合は別途削除する必要がある
1
 |  | 
ステージングを取り消す
ステージングを取り下げる。編集内容は残る
ファイル名を指定しないと全てのステージングが取り下げられる。
1
 |  | 
ステージしたファイルを最後にコミットした状態に戻す(編集内容は残らない)
1
 |  | 
編集・ステージングいずれの変更内容を取り消し、最後にコミットした状態に戻す
1
 |  | 
checkoutとresetの違いを説明をざっくりとだけ説明すると、
大きく分けて違いは二つ
作業ディレクトリの未保存の有無をチェック
checkout:ある。うまくやれば未変更のファイルを全て更新してくれる
reset --hard:ない。容赦無く上書きされるHEADの移動の仕方
checkout:HEADそのものが移動。HEADが付いていたブランチに変化はない
reset:HEADの示すブランチの方が移動
コミットのバージョンを戻す
コミットidをgit logコマンドで調べて戻したいコミットidを指定する
1
 |  | 
reset --hardが戻った以降のコミットをなかったコトにする(コミットログが消える)のに
対しrevertはコミットログを残したまま戻る
そのままpushしたりmergeされたりすると、反映されていない変更履歴が残ってしまい、
戻したくなった時にそれを知らないと混乱させる元になる。
チーム開発では要注意!
1
 |  | 
リモートのバージョンを一つ前に戻す
結論から言うとそれ用のコマンドは用意されていない!
念の為バックアップを作成
1
 |  | 
remoteのmasterを一旦消す。ローカルを一つ戻す
pushして反映させる
1
 |  | 
バックアップを消す