やりたいこと
- 今作業している変更を取り消して、最新のコミット状態に戻したい
- 「うわ、この変更まずいかも?前のに戻したいなぁ…」
- 「ちょっと試した変更、微妙だったわ。戻そ」
- 「やば、間違えてこのディレクトリ消しちゃった!」
みたいなとき、どんなgitコマンドを打てばいいのか。 (まだインデックスを更新してない場合)
結論
git checkout HEAD .
もしくはこちらでも。
git checkout .
解説
なぜ、上記の方法で解決するか。
まず、git checkoutには2つ機能がある。
- 1: 作業ブランチを切り替える
- 引数にブランチ名を指定する
- 2: 指定したコミットの状態を、インデックスと作業ツリーに展開する
- ファイルパスやファイル名を指定する
参考:Git で変更を取り消して、元に戻す方法 (事例別まとめ) | WWWクリエイターズ
今回の場合、2番めの方法を利用している。
たとえば、
git checkout HEAD ファイルA
こうすることで、ファイルAをHEADの状態、つまり最新のコミットの状態に変更できる。
よって、
git checkout HEAD .
これですべてのファイルをHEADの状態に戻すことができる。結果的に、インデックスしていない変更は破棄されて、最新のコミット状態に戻る。