Just do IT

思うは招く

まだgit addしてない状態で変更を取り消して、最新のコミット状態に戻したい

やりたいこと

  • 今作業している変更を取り消して、最新のコミット状態に戻したい
  • 「うわ、この変更まずいかも?前のに戻したいなぁ…」
  • 「ちょっと試した変更、微妙だったわ。戻そ」
  • 「やば、間違えてこのディレクトリ消しちゃった!」

みたいなとき、どんなgitコマンドを打てばいいのか。 (まだインデックスを更新してない場合)

結論

git checkout HEAD .

もしくはこちらでも。

git checkout .

解説

なぜ、上記の方法で解決するか。

まず、git checkoutには2つ機能がある。

  • 1: 作業ブランチを切り替える
    • 引数にブランチ名を指定する
  • 2: 指定したコミットの状態を、インデックスと作業ツリーに展開する
    • ファイルパスやファイル名を指定する

参考:Git で変更を取り消して、元に戻す方法 (事例別まとめ) | WWWクリエイターズ

今回の場合、2番めの方法を利用している。

たとえば、

git checkout HEAD ファイルA

こうすることで、ファイルAをHEADの状態、つまり最新のコミットの状態に変更できる。

よって、

git checkout HEAD .

これですべてのファイルをHEADの状態に戻すことができる。結果的に、インデックスしていない変更は破棄されて、最新のコミット状態に戻る。