正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

変更をスタッシュする

別のブランチに切り替えたいが、まだコミットする準備ができていない変更がある場合は、git stashを使用します。

スタッシュエントリを作成する

デフォルトでは、git stashはワーキングディレクトリの追跡された変更と、ステージングに追加された変更を保存します。オプションを使用して、どの変更を含めるかを制御できます。

  • 追跡対象の変更をスタッシュするには:

    git stash
  • メッセージ付きで変更をスタッシュするには:

    git stash push -m "describe your changes here"
  • 変更をスタッシュするが、ステージングに追加された変更は作業ディレクトリに残すには:

    git stash push -k

    -k (--keep-index) オプションは、変更をstashしますが、ワーキングディレクトリにもそれらを保持します。このオプションは、変更を一時的に保存したいが、引き続き作業を続けたい場合に使用します。

  • 変更をスタッシュし、追跡対象外のファイルを含めるには:

    git stash push -u

    -u (--include-untracked) オプションは、Gitがまだ追跡していないファイルもstashします。このオプションがない場合、コミットされていない新しいファイルは作業ディレクトリに残ります。

  • ステージングに追加された変更のみをスタッシュするには:

    git stash push -S

    -S (--staged) オプションは、ステージングされている変更のみをstashします。ステージングに追加された変更を保存し、ステージングされていない変更への作業を続けたい場合、このオプションを使用します。

スタッシュエントリを適用する

作業をスタッシュした後に多くの変更を加えると、スタッシュを適用する際に競合が発生する可能性があります。変更を適用する前に、これらの競合を解決する必要があります。

  • 最新のスタッシュエントリを適用し、スタッシュに残すには:

    git stash apply
  • 特定のスタッシュエントリを適用するには:

    git stash apply stash@{3}
  • 最新のスタッシュエントリを適用し、スタッシュから削除するには:

    git stash pop

スタッシュエントリを表示する

  • すべてのスタッシュエントリを表示するには:

    git stash list
  • 詳細を含むスタッシュエントリを表示するには:

    git stash list --stat

スタッシュエントリを削除する

  • 最新のスタッシュエントリを削除するには:

    git stash drop
  • 特定のスタッシュエントリを削除するには:

    git stash drop <name>
  • すべてのスタッシュエントリを削除するには:

    git stash clear

例: スタッシュエントリの作成と適用

Gitスタッシュの使用を試すには:

  1. Gitリポジトリ内のファイルを変更します。

  2. 変更をスタッシュします:

    git stash push -m "Saving changes from edit"
  3. スタッシュリストを表示します:

    git stash list
  4. 保留中の変更がないことを確認します:

    git status
  5. スタッシュされた変更を適用し、スタッシュからエントリを削除します:

    git stash pop
  6. エントリが削除されたことを確認するために、スタッシュリストを表示します:

    git stash list