変更のスタッシュ化
これで作業環境がセットアップできたので、いくつかの変更を作成して、それをスタッシュ化する方法を学びましょう。
まず、README.md ファイルにいくつかの変更を加えましょう。
echo "This is a work in progress" >> README.md
このコマンドは、README.md ファイルに新しい行を追加します。また、新しいファイルも作成しましょう。
echo "Some important notes" > notes.txt
この時点で git status
を実行すると、変更されたファイルと追跡されていないファイルが両方あることがわかります。
git status
README.md が変更されており、notes.txt が追跡されていないことを示す出力が表示されるはずです。
この時点で、急遽別のタスクに切り替える必要があるが、これらの変更をコミットする準備ができていないと想像してみてください。ここで git stash
が便利になります!
変更をスタッシュ化するには、次のコマンドを実行します。
git stash
次のような出力が表示されるはずです。
Saved working directory and index state WIP on master: 1234567 Initial commit
この時点で、もう一度 git status
を実行すると、興味深いことがわかります。
git status
README.md はもはや変更されていると表示されなくなりましたが、notes.txt は依然として追跡されていないファイルとしてリストアップされています。これは git stash
に関する重要なポイントです。
重要なこと:デフォルトでは、git stash
は次のもののみをスタッシュ化します。
- 追跡ファイル(既に Git が追跡しているファイル)の変更
- ステージングされた変更
追跡されていないファイル(私たちの例では notes.txt)は、デフォルトではスタッシュに含まれません。この動作により、リポジトリに含めたくない新しいファイルが偶然隠されることがないようになっています。
追跡されていないファイルをスタッシュに含めたい場合は、-u
(または --include-untracked
)オプションを使用できます。
git stash -u
このコマンドを実行すると、README.md の変更と新しい notes.txt ファイルの両方がスタッシュ化されます。
スタッシュに何が含まれているかを確認するには、次のコマンドを使用できます。
git stash list
使用したオプションに応じて、1 つまたは 2 つのスタッシュ エントリが表示されるはずです。
スタッシュ リスト ビューを終了するには、q
を押します。
忘れないでください。スタッシュ化は、迅速なコンテキスト切り替えに最適です。ただし、長期的なワークフローにおけるコミットの代わりにはなりません。スタッシュは一時的な保管場所です。