はじめに
Gitは、リポジトリでファイルを管理するため、そのリポジトリにファイルをもってくるための「登録(add)」と「コミット(commit)」、最後にリモート上にあるリポジトリに「アップロード(push)」する等の操作があるのですが、間違えて処理してしまったり、自分が思ってた結果にならなかったりして、処理をやり直すことがよくあります。そんな時にいつもどうやって処理したらいいか忘れがちなので、各状況に応じた対処法を備忘録として残しておきます。
ファイルの編集をやり直したい 〜git add .実行前〜
$ git checkout . #ファイル編集の取り消し 【注】新規追加ファイルは削除されない
$ git clean -df . #新規追加ファイルの取り消し
git add .をやり直したい 〜git commit 実行前〜
$ git reset HEAD .
addの取り消しのみとなるため、ファイル編集も行う場合は上記の「ファイルの編集をやり直したい」を実行する。
commit をやり直したい
$ git reset --hard(soft) HEAD^ #最新のコミットの取り消し
コマンド | 意味 |
---|---|
--hard | コミットを取り消し、ワークディレクトリの内容も書き換える |
--soft | ワークディレクトリの内容はそのまま、コミットだけを取り消す |
HEAD^ | 直前のコミット |
HEAD~{n} | n個前のコミット HEAD^^^とHEAD~3とHEAD~~~とHEAD~{3}と@^^^は同じ意味 |
git commit --amand
直前のコミットメッセージを変更する。
push をやり直したい
$ git revert [commit ID]
$ git push
・[commit ID]はgit log
で確認
『commit b170aafd30b30230a4df3597e11a0195094d84b6』こんな感じのコミット以下の値を貼り付ける。
・指定したコミット時点の状態にまで戻し、コミットを行うが、reset
と違って履歴は消えない。