- ワーキングツリー(gitで管理してるディレクトリ)内のファイルを編集
- git add
- git commit
- 「あ、間違った…」git commit 取り消したい
てとき。
「3. git commit」を取り消す
直前のコミットだけ取り消したい場合。
git reset --soft HEAD^
コミットだけ取り消しても、git add したステージングへの更新は消えない。
いつも git add は「git add . 」しかしてなかったワシは「コミットだけ取り消してadd 取り消さないってことに意味在るんか?」とアホなことを思っていたが、
git add を何回もやって変更ファイルを追加していってから
git commit する みたいな使い方をする場合意味在るし(というかこれが一般的?)、
git commit のコメントを書き換えたい場合にも有効?
…と思ったが、コメントだけ書き換えたい場合は、効率的なやり方があるらしい。↓
git commit --amend -m "これが本当に書きたかったコメントだあぁー!"
–amend オプション ですって。
「3. git commit」 と 「2. git add」 を取り消す
git commit と、 git add を取り消すには以下のコマンド。
git reset HEAD^
個人的にはこれが一番使いそうやなー。
「3. git commit」 と 「2. git add」 と「ワーキングツリー(gitで管理してるディレクトリ)内のファイルを編集」を取り消す
git commit と、 git add と、ワーキングツリーの中身までを直前のコミットの状態に戻すには以下のコマンド。
git reset --hard HEAD^
ワーキングツリーの中身まで戻っちゃうので要注意やでー。
戻す位置指定の仕方
git reset HEAD^
↑この緑色で示した部分で、どこまで戻すかを指定できる。
3パターン書いておく。
パターン1. 直前のコミット指定
直前のコミット指定するには、
HEAD^
で指定する。
HEAD^
:直前のコミットを意味する。
直前まで戻しちゃう。
例)
git reset HEAD^
パターン2. ●個前のコミット指定
●個前のコミット指定するには、
HEAD~●
で指定する。
HEAD~{n}
:n個前のコミットを意味する。
、8個前のコミットまで巻き戻すときはどうする?もちろん「HEAD^^^^^^^^」と書くこともできるが、指が疲れるし間違えそうだ。そこで「HEAD~8」のように書くこともできる。
例)
git reset HEAD~8
パターン3. コミットIDで指定
指定したコミットIDまで戻すことができる。
もちろんコミットIDで指定することもできるぞ。たとえば次のように打てる。
例)
$ git reset --soft caddd1c
参考にしたサイト
ありがとうございました!
コメント