Gitでファイル変更をリセットする魔法のコマンド「git checkout .」
開発者として成長する過程で、「ああ、もっと早く知っていれば...」と思うコマンドがいくつかあります。git checkout .
はまさにそんなコマンドの一つです。このシンプルながらも強力なコマンドについて解説します。
こんな経験はありませんか?
開発中に変更を重ねているうちに:
- コードがぐちゃぐちゃになってしまった
- 変更内容を破棄したいが、どうすればいいか分からない
- 結局、リポジトリを再クローンして一からやり直した
そんな無駄な時間を過ごさなくて済む魔法のコマンドがgit checkout .
です。
git checkout .とは何か?
git checkout .
は、ワーキングディレクトリ内のすべての変更を破棄し、最後のコミット(HEAD)の状態に戻すコマンドです。つまり、まだコミットしていない変更をすべて元に戻します。
git checkout .
このドット(.
)は現在のディレクトリとそのサブディレクトリすべてを指しています。
使い方と注意点
いつ使うべき?
- 実験的なコード変更が失敗した時
- コードを複数の方向に変更してしまい、整理がつかなくなった時
- クリーンな状態から再スタートしたい時
注意点
- 変更は元に戻せません。コマンド実行後、未コミットの変更はすべて失われます
- 新しく追加したファイル(untracked files)には影響しません
- ステージング済み(
git add
したファイル)の変更も破棄されます
関連するコマンド
より細かい制御が必要な場合は、以下のコマンドも覚えておくと便利です:
- 特定のファイルの変更だけを戻す:
git checkout -- path/to/file.js
- 新規ファイル(untracked files)も含めてすべてを元に戻す:
git clean -fd
git checkout .
- ステージングした変更を戻す(変更自体は残す):
git reset HEAD .
実践例
開発中によくあるシナリオでgit checkout .
の使い方を見てみましょう:
シナリオ: コードの実験が失敗した場合
# いくつかのファイルを変更
$ vim src/app.js
$ vim src/utils.js
# 変更内容を確認
$ git status
Changes not staged for commit:
modified: src/app.js
modified: src/utils.js
# 変更が思った通りにならなかった...すべて元に戻したい
$ git checkout .
# 変更が破棄され、クリーンな状態に
$ git status
nothing to commit, working tree clean
まとめ
git checkout .
は、開発環境を素早くリセットする強力なツールです。リポジトリを再クローンするような極端な対応は不要になります。
ただし、その力を尊重し、未コミットの重要な変更がある場合は注意して使いましょう。適切に使えば、作業の効率を大幅に向上させる味方になってくれます。
Git を使いこなす道のりで、このコマンドがあなたの開発ライフを少しでも快適にできれば幸いです。次回からのコード実験も、このコマンドを味方につけて、より大胆に行えるようになるでしょう!
最後に
私は2つのプラットフォームで生成AIに関する発信を行なっております。
生成AIサービスの考察を見たい方へ
生成AIサービスの動向やや具体的な内容は、noteで詳しく解説しています。
noteプロフィール: @mizupee
日々の生成AI分析を追いたい方へ
毎日1つの生成AIサービスを分析するTwitter投稿「#100DaysofAI」もぜひフォローください。簡潔なポイント分析とアイデア共有を継続中です。
Twitter: @mizupee
Discussion