開発中に「ちょっとこの変更だけコミットして動作を確認したい」というシーンは意外と多いものです。しかし、他の人と共有する必要がない作業をわざわざリモートにpushするのは避けたいところ。この記事では、ローカル限定での一時的なコミットと、その後元に戻す方法について解説します。
一時的な変更をローカルでコミットする理由
開発の過程で次のようなケースに遭遇することがあります。
- 単体テストを通すために一時的にコードを加えたい
- ビルドしてみないと不具合の有無がわからない
- 他の修正と混在させたくないので差分を分けたい
このようなときには一時コミット → 動作確認 → 巻き戻しという流れが有効です。
一時的にコミットして動作確認する方法
まずは現在の作業状況を把握し、安全に一時コミットを行う準備をします。
ステージングして一時コミットする
git add .
git commit -m "temp: 動作確認用一時コミット"
この時点で全変更内容をコミットし、ローカルのHEADに追加された状態になります。pushは不要です。
一時コミット状態でビルド・動作確認する
いつも通りローカル環境でビルドやテストを行います。
例えば以下のようにビルドコマンドを実行します。
npm run build
# または
php artisan serve
問題がなければそのまま正式な作業として進めるもよし、不要であれば元に戻します。
一時コミットを取り消して元に戻す方法
動作確認が済んで一時コミットを削除したい場合、次のいずれかの方法で対応します。
方法1:git reset –soft HEAD~1(作業ツリーはそのまま)
git reset --soft HEAD~1
このコマンドで直前のコミットを取り消し、ステージング状態に戻すことができます。作業内容はそのまま保持されているので、再編集も可能です。
方法2:git reset –mixed HEAD~1(ステージ解除して作業ツリーに戻す)
git reset --mixed HEAD~1
この場合はステージからも外れるので、git statusを確認すると変更内容が未ステージ状態に戻っていることがわかります。
方法3:git reset –hard HEAD~1(完全に巻き戻す)
git reset --hard HEAD~1
一時コミットの内容を完全に破棄する方法です。作業ツリーもロールバックされるため、変更そのものが不要だった場合に使います。
※ –hardは元に戻せないため慎重に実行してください。
ブランチを分けて確認するという選択肢も
一時コミットをmainブランチやfeatureブランチで行うことに不安がある場合は、一時的なブランチを作成して確認するのもひとつの手です。
git checkout -b temp/test-feature
git add .
git commit -m "一時テスト"
# 動作確認後
git switch main
git branch -D temp/test-feature
ブランチ単位で分離しておけば、元の作業に影響を与えることなくテストできます。
まとめ
Gitを使ったローカルでの一時コミットと巻き戻しは、動作確認や検証作業をスムーズにするための強力な手段です。以下のポイントを押さえておきましょう。
- 一時コミットは git commit -m で通常通り実行可能
- 巻き戻すには git reset 系のコマンドを適切に選ぶ
- 不安がある場合は一時ブランチでの作業が安心
本格的なコミット前に不安な点をテストしておくことで、無駄なpushや差分の混在を防げます。ぜひ活用してください。