Gitを使っていると、作業中に変更を加えたファイル(modified)がたくさん出てくることがあります。「一旦すべての変更を破棄して元に戻したい」という場面もあるかと思いますが、Untracked(未追跡)のファイルやディレクトリはそのまま残しておきたいというケースも多いでしょう。
本記事では、Gitでmodifiedファイルのみを安全に元に戻す方法について、具体的なコマンドとあわせて紹介します。
用語の整理
Gitのステータスには、主に以下の3種類の状態があります。
状態 | 内容 |
---|---|
Modified | 追跡中のファイルを編集した状態(=変更済み) |
Staged(Indexed) | git add 済みで、次のコミットに含まれる状態 |
Untracked | Gitの管理下にない新しいファイル(まだaddしていない) |
Modified ファイルをすべて元に戻すコマンド
git restore .
または、Gitの旧構文を使う場合は:
git checkout -- .
説明:
git restore .
現在のディレクトリ配下にあるすべての modifiedなファイル の内容を、最新コミットの状態に戻します。git checkout -- .
同様に、変更されたファイルを元に戻す旧形式のコマンドです(Git 2.23より前はこちらが主流)。
💡どちらも untracked ファイルには影響しません。削除もされません。
ステージ済み(git add 済)のファイルも元に戻したい場合
ステージに上がってしまっている変更(git add
済み)も含めて、modified ファイルをすべて元に戻すには、以下の2段階が必要です:
git reset
git restore .
説明:
git reset
:ステージから変更を取り消す(indexをリセット)git restore .
:作業ツリーの変更を破棄(元のファイル内容に戻す)
untracked ファイルを誤って消さないために
似たコマンドで注意が必要なのが git clean
です。
git clean -f
このコマンドは untrackedなファイルを削除 します。慎重に使いましょう。
「本当に削除していいか確認したい」という場合は、-n
オプションを使って事前確認できます。
git clean -n
まとめ
- modified ファイルだけを元に戻すなら:
git restore .
- ステージ済みの変更も含めて元に戻すなら:
git reset
git restore .
git clean
は untracked ファイルを削除するので注意
Gitの作業中は「どのファイルをどう扱うか」の判断が重要です。特にuntrackedファイルには手を加えずに、変更済みのファイルだけを元に戻したい場合は、git restore
を基本に使うと安全で便利です。
コメント