daybreaksnow's diary

私を私と呼びたい

[git]入門git 4.コミットの取り消し

公開してはいけないパスワードなどを含んだテキストをコミットしてしまうことは稀にある。
リモートリポジトリに変更をpushしてしまうと、もう取り消すことは難しい。
しかし、ローカルにコミットしただけであれば、取り消しが可能。

直前のコミットの取り消し

-Cは指定したリビジョンのコミットメッセージを使うということ。
--amendは直前のコミットを訂正する

git commit -C HEAD -a --amend

取り消したコミットはgit logではもう見えなくなるが、新しくできたリビジョンのハッシュ値は取り消したもとのは異なる状態となる。
そのため、取り消したコミットもリビジョンを指定すればgit logで見れる。

指定のコミットの取り消し

変更された内容を打ち消して新しくコミットする

git revert HEAD

-nを付ければコミットされないので、複数の変更を取り消せる

git revertした結果コンフリクトが発生した場合は、以下のコマンドで元に戻せる
(新規ファイル追加だけrevertして、編集をrevertしてないとか)

git revert --abort

指定のコミットまでHEADを戻す

直前の変更に戻す

git reset "HEAD^"

この後git logを打っても、直前のコミットは見えなくなっている。
作業ツリーはコミットした状態になっている。
作業ツリーもコミット前の状態に戻すには、--hardを付ける。