gitでステージングした変更を取り消す、代表的な2つの方法について解説する。
おすすめの方法: `git restore`
Git v2.23から導入された、より安全で直感的なコマンドである。ステージングの取り消しに特化しているため、誤操作のリスクが低い。
特定のファイルを取り消す
`--staged` オプションを付けて、取り消したいファイル名を指定する。
git restore --staged <ファイル名>
ステージングした全てのファイルを取り消す
カレントディレクトリを意味する `.` を指定すると、全ての変更を一度に取り消せる。
git restore --staged .
従来の方法: `git reset`
古くから使われている多機能なコマンドである。古いバージョンのGit環境でも動作する。
特定のファイルを取り消す
取り消したいファイル名を指定する。`HEAD` は省略可能である。
git reset HEAD <ファイル名>
ステージングした全てのファイルを取り消す
ファイル名を指定しないことで、ステージングエリアの全ての変更を取り消す。
git reset
どちらを使うべきか?
基本的には、以下の基準で判断すると良い。
- `git restore`: Gitのバージョンが2.23以降であれば、こちらを第一候補とすべきである。役割が明確で安全である。
- `git reset`: 古いGit環境で作業する場合や、`reset` の他の機能と合わせて使う場合に便利である。
重要: どちらのコマンドも、ファイルの変更内容自体は消去しない。ステージングエリアからワーキングディレクトリに戻すだけなので、安心して実行できる。