gitで追加・変更したファイルやディレクトリを取り消し方法(add前/add後/commit後/push後)
gitで追加や変更したファイルを取り消したい場合のコマンドをまとめました。
目次
[git add前]に追加・変更したファイルやディレクトリの取り消し方法
追加と更新を同時に取り消すことはできないため、追加用と更新用で別のコマンドを実行します。
ポイント
全ディレクトリを対象に取り消しを行いたい場合は、ルートディレクトリで実行する必要があります。
追加ファイルの取り消し方法
git clean -f
ディレクトリも含める場合
git clean -df
更新ファイルとディレクトリの取り消し方法
git checkout .
または
git restore .
git restoreはver2.23以降で追加された新しいコマンドです。
[git add後]に追加・変更したファイルやディレクトリの取り消し方法
最新のコミットの状態に戻す例としてコマンドを紹介していますので「HEAD」を指定していますが、特定の「commit hash」を指定することで任意の状態に戻すことも可能です。
ステージングエリアのみ取り消したい場合
git reset HEAD
作業ディレクトリも取り消したい場合
git reset --hard HEAD
[git commit後]に追加・変更したファイルやディレクトリの取り消し方法
一つ前のcommitに戻す場合の例です。二つ前なら 「HEAD^^」 や「commit hash」を指定することで任意の戻すこともできます。
ローカルリポジトリのcommitのみ取り消したい場合
git reset --soft HEAD^
ステージングエリアも取り消したい場合
git reset HEAD^
作業ディレクトリとステージングエリアも取り消したい場合
git reset --hard HEAD^
git resetコマンドについてはこちらの記事でも図で解説しています。
[git push後]にリモートリポジトリに追加・変更したファイルやディレクトリの取り消し方法
git resetコマンドを利用してリモートリポジトリのcommitを取り消す(削除する)こともできるのですが、リモートリポジトリには取り消した履歴も残すことが望ましいため、git resetコマンドではなくgit revertコマンドを利用し、打ち消すcommitを作成することで対応します。
現在のcommitを打ち消す場合の例です。「commit hash」を指定することで任意のcommitを打ち消すこともできます。
git revert HEAD
git push [remote-repository] [branch]
git revertコマンドについてはこちらの記事でも図で解説しています。