# Git備忘録
## 特定のコミットまで戻したい
**色々変更してコミットをしたが,やっぱ元に戻したいときがある**
まずは,コミットのログを見る(gitファイル[.git]があるディレクトリで作業する)
```bash
& git log
commit asdf99g0a78a0ggfa80gfa0889er8fgfgd00gffg (HEAD -> main)
Author: xxxxxxxxxxxx
Date: Wed May 31 17:02:37 2023 +0900
fixed image name
commit gaf9gf76afsdg87dfg86af6g7dfag5ag4dfhh5fd
Author: xxxxxxxxxxxx
Date: Wed May 31 13:41:45 2023 +0900
test commit
commit gfgg56hgs56745fdh7087afdh4fa3hddah7dah64
Author: xxxxxxxxxxxx
Date: Wed May 31 12:13:54 2023 +0900
Initial commit
```
戻りたい地点のコミットハッシュをコピー
今回は最初の`Initial commit`の状態にする
> `git reset --hard [コミットハッシュ]`コマンドを使用.これは,指定したコミットハッシュに戻す(指定より新しいコミットを削除する)
> `--hard`は指定した地点の内容に戻す(上位層の変更内容は消える)
> `--soft`は直近までの変更内容は残るが,コミットは消える
```bash
$ git reset --hard gfgg56hgs56745fdh7087afdh4fa3hddah7dah64
$ git log # 上位層のコミットが消えているか確認
```
リモートリポジトリにも反映する
通常の`push`を行うと,リモートとローカルでコミット履歴が異なるためエラーが出る
`-f`オプションで強制的にローカルの状態をリモートに反映する
```bash
& git push -f origin main
```
以上で変更履歴を戻すことができた