特定の Git スタッシュを適用する方法

GitBeginner
オンラインで実践に進む

はじめに

Git stash は、開発者がコミットせずにローカルの変更を一時的に保存できる強力な機能です。このチュートリアルでは、特定の Git stash を適用する手順を案内し、開発ワークフローを効率的に管理し、クリーンなコードベースを維持するのに役立てます。

Git Stash の基本を理解する

Git Stash は、Git の強力な機能で、コミットせずにローカルの変更を一時的に保存できます。これは、別のブランチに切り替えたり、リモートリポジトリから最新の変更を取得したりする必要があるが、現在のブランチで行った作業を失いたくない場合に特に便利です。

Git Stash とは何ですか?

Git Stash は、ステージング済みと未ステージングの両方の変更を含むローカルの変更を一時的に保存する方法で、後で適用または破棄できます。これにより、別のブランチに切り替えたり、最新の変更を取得したり、他の Git 操作を行ったりしても、現在の作業が失われません。

Git Stash をいつ使用するか?

以下のシナリオで Git Stash を使用することがあります。

  • 機能開発中に、バグを修正したりプルリクエストをマージしたりするために別のブランチに切り替える必要がある場合。
  • リモートリポジトリから最新の変更を取得したいが、まだローカルの変更をコミットしたくない場合。
  • いくつかの実験的な変更を行い、後で使えるように保存したいが、メインブランチにコミットしたくない場合。

Git Stash の使い方

Git Stash を使用するには、以下の手順に従います。

  1. 作業ディレクトリがクリーンであることを確認します(追跡されていないまたは変更されたファイルがないこと)。
  2. git stash コマンドを実行して、現在の変更をスタッシュに保存します。
  3. 目的のブランチに切り替えるか、他の Git 操作を行います。
  4. スタッシュした変更を適用する準備ができたら、git stash apply を実行して最新のスタッシュを適用するか、git stash apply stash@{n} を実行して特定のスタッシュを適用します。ここで、n は適用したいスタッシュのインデックスです。
## Save current changes to the stash
git stash

## Switch to a different branch
git checkout feature/new-functionality

## Apply the most recent stash
git stash apply

## Apply a specific stash
git stash apply stash@{2}

Git Stash の可視化

Mermaid ダイアグラムを使用して Git Stash のプロセスを可視化できます。

graph TD A[Working Directory] --> B[Stash] B --> C[Working Directory] B --> D[Branch]

このダイアグラムは、Git Stash 機能がどのようにしてローカルの変更を一時的にスタッシュに保存し、別のブランチに切り替え、その後スタッシュした変更を作業ディレクトリに戻すことができるかを示しています。

特定の Git Stash を適用する

git stash apply コマンドは最新のスタッシュを適用するのに便利ですが、スタッシュリストから特定のスタッシュを適用する必要がある場合もあります。これは、複数のスタッシュがあり、それらを選択的に適用する必要があるときに特に役立ちます。

利用可能なスタッシュを一覧表示する

利用可能なスタッシュのリストを表示するには、git stash list コマンドを使用できます。

git stash list

これにより、保存したすべてのスタッシュのリストが表示され、それぞれのインデックスと含まれる変更の説明も表示されます。

特定のスタッシュを適用する

特定のスタッシュを適用するには、git stash apply コマンドの後にスタッシュ参照を指定します。スタッシュ参照は stash@{n} の形式で、n は適用したいスタッシュのインデックスです。

## Apply the stash at index 2
git stash apply stash@{2}

スタッシュを適用した後、スタッシュリストから削除したい場合は、代わりに git stash pop コマンドを使用できます。

## Apply and remove the stash at index 2
git stash pop stash@{2}

スタッシュ適用の可視化

Mermaid ダイアグラムを使用して、特定のスタッシュを適用するプロセスを可視化できます。

graph TD A[Stash List] --> B[Stash@{2}] B --> C[Working Directory]

このダイアグラムは、スタッシュリストから特定のスタッシュ(この場合は Stash@{2})を選択し、作業ディレクトリに適用する方法を示しています。

スタッシュ管理テクニック

特定のスタッシュを適用することに加えて、以下のコマンドを使用してスタッシュリストを管理することもできます。

  • git stash clear: スタッシュリストからすべてのスタッシュを削除します。
  • git stash drop stash@{n}: スタッシュリストから特定のスタッシュを削除します。
  • git stash show stash@{n}: 特定のスタッシュに含まれる変更を表示します。

これらのテクニックを習得することで、Git スタッシュを効果的に管理し、必要に応じて適用して開発ワークフローを合理化することができます。

高度な Git Stash テクニック

基本的な Git Stash コマンドは強力ですが、スタッシュをよりよく管理して活用するためのいくつかの高度なテクニックもあります。これらのテクニックは、より複雑な開発ワークフローで特に役立ちます。

メッセージ付きでスタッシュする

スタッシュを作成するときに、メッセージを追加して、どのような変更が含まれているかを覚えやすくすることができます。これは、複数のスタッシュがあり、それぞれの目的をすばやく識別する必要がある場合に特に役立ちます。

## Stash changes with a message
git stash save "Implement new feature"

追跡されていないファイルをスタッシュする

デフォルトでは、git stash コマンドは追跡されているファイル(すでに Git のバージョン管理下にあるファイル)のみを保存します。追跡されていないファイルもスタッシュに含めたい場合は、-u または --include-untracked オプションを使用できます。

## Stash changes including untracked files
git stash -u

特定のファイルまたはディレクトリをスタッシュする

特定のファイルまたはディレクトリのみをスタッシュしたい場合は、それらを git stash コマンドの引数として指定できます。

## Stash changes in a specific directory
git stash save "Stash changes in src directory" src/

別のブランチにスタッシュを適用する

時には、スタッシュを作成したときとは別のブランチにスタッシュを適用したいことがあります。これは git stash branch コマンドを使用して行うことができます。

## Apply a stash to a different branch
git stash branch feature/new-functionality

このコマンドは、新しいブランチを作成してチェックアウトし、その後最新のスタッシュを新しいブランチに適用します。

高度なスタッシュテクニックの可視化

Mermaid ダイアグラムを使用して、いくつかの高度な Git Stash テクニックを可視化することができます。

graph TD A[Working Directory] --> B[Stash] B --> C[Branch A] B --> D[Branch B]

このダイアグラムは、異なるブランチにスタッシュを適用することができ、異なる機能やバグ修正の作業を簡単に切り替えることができることを示しています。

これらの高度な Git Stash テクニックを習得することで、複雑なシナリオでも開発ワークフローを合理化し、コードベースをよりよく管理することができます。

まとめ

このチュートリアルの終わりまでに、特定の Git スタッシュを適用する方法について包括的に理解し、スタッシュした変更を管理するための高度なテクニックも学ぶことができます。これらのスキルを習得することで、Git ベースの開発プロセスを合理化し、より整理された効率的なコードベースを維持することができます。