1. 導入:なぜgit stashが必要なのか?
開発中に「修正の途中で別の緊急タスクが入った!」「今の作業はまだコミットしたくないけれど、ブランチを切り替えたい」といった状況に陥ったことはありませんか?中途半端な状態でコミットしてしまうと、履歴が汚れてしまい後からの修正も大変になります。そんな時に役立つのが git stash です。これを使えば、作業中の変更を一時的に「倉庫」へ退避させ、ブランチをクリーンな状態に戻すことができます。
2. 基礎知識:git stashとは
git stash は、まだコミットしていない変更(ステージング済み・未ステージングの両方)を一時的にメモリ上のスタックに退避させるコマンドです。作業領域(ワーキングディレクトリ)がきれいになるため、別のブランチに移動して作業を再開したり、プルを行ったりすることが可能になります。
3. 実装/解決策:基本操作の流れ
基本的には以下の流れで操作を行います。
1. 作業中の変更を git stash push で退避させる。
2. 必要な作業(ブランチ移動など)を行う。
3. git stash pop で退避させた変更を元のブランチに復元する。
4. サンプルプログラム:実際に試してみよう
以下のコマンドをコピー&ペーストして、一連の動きを確認してみてください。
1. 現在の変更を退避させる("作業中"というメッセージ付きで保存)
git stash push -m "作業中"
2. 退避したリストを確認する(何が保存されているかチェック)
git stash list
3. 必要に応じて別のブランチへ移動や作業を行う
git checkout main
4. 元のブランチに戻り、退避させた変更を復元する(復元と同時にリストから削除)
git stash pop
補足:復元するがリストには残しておきたい場合は以下を使う
git stash apply
5. 応用・注意点:現場で役立つポイント
現場で活用する上で、以下の点に注意してください。
・コンフリクトに注意: 別のブランチでファイルに変更を加えてから git stash pop を行うと、コンフリクト(競合)が発生することがあります。その場合は、通常のGitマージと同じように手動で修正が必要です。
・stashは溜めすぎない: git stash list で確認した際に、古いstashが大量に残っていると管理が困難になります。不要になったら git stash drop コマンドで個別に削除するか、git stash clear で一括削除して整理しましょう。
・未追跡ファイルも退避したい場合: デフォルトでは新規作成したファイル(Untracked files)はstashされません。含めたい場合は git stash -u を使用してください。
この機能を使いこなせば、割り込みタスクへの対応が格段にスムーズになります。ぜひ日々の開発に取り入れてみてください。

コメント