【必読】git stashの基本|一時保存から再適用、削除まで

※本サイトにはプロモーション・広告が含まれています。

(最終更新日:2023年8月)

✔当記事は以下のような方に向けて書かれています

「git stashとは何で、何ができるのだろう?」
「git stashの具体的な使い方を知りたい」
「git stashの使用例を参照したい」

✔当記事で得られる知識

  • git stashの基本的な概要
  • git stashの正しい使用法とその応用方法
  • git stashを用いた具体的な事例

当記事では、git stashの基本的な使い方からそのオプションを利用した応用例まで、実際の事例を通じて詳細に解説します。

ぜひとも最後までご一読ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロジェクトマネージャー/SE(元外資系金融機関営業)

【副業】ブログ(月間15万PV)/YouTube/Web・アプリ制作

コミュニケーション × ビジネススキル × 文章力 × プログラミングスキルを活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

「Git stash」基礎知識

こちらでは、「Git stash」についてお伝えしていきます。

この機能を理解し、利用することで、より円滑にGitを操作できるでしょう。

  • Git stashとは?
  • Git stashの活用シーン

Git stashとは?

「Git stash」とは、作業中の変更を一時的に保存するための機能です。

ブランチを切り替えるなど、別の作業をおこなうときに、現在の作業を一時的に退避させられます。

# 変更を一時的に保存
git stash

Git stashの活用シーン

Git Stashが使える具体的なシーンを見てみましょう。

ブランチfeature-xyzで新機能の開発中に、別のブランチhotfix-abcで緊急のバグ修正が必要になりました。

未完了の作業がある状態で、別のブランチに切り替えることは通常できません。

ここでgit stashを使い、進行中の変更を一時的に保存後、別のブランチへ安全に移動できるのです。

以下はその操作手順になります。

1.現在の変更を一時保存する

git stash save "一時保存の説明"

2.別のブランチに移動する

git checkout hotfix-abc

3.バグ修正などの作業を行いコミットする

git commit -m "バグ修正"

4.元のブランチに戻る

git checkout feature-xyz

5.一時保存した作業を再開する

git stash apply

git stashを使用することで、未完了の作業を安全に一時保存できます。

git stashは複数の作業を同時に進める際に非常に役立つコマンドです。

基本的な「Git stash」操作

次に、「Git stash」の基本的な操作について見ていきましょう。

これらの操作を理解し、使いこなすことで、作業効率を大いに向上させられます。

  • 変更の保存
  • 保存にメッセージを追加
  • 保存したstashの一覧表示
  • 保存したstashの内容を確認

変更の保存

「Git stash」を使用して、現在の作業中の変更を一時的に保存するには、以下のコマンドを実行します。

# 現在の作業中の変更を一時的に保存
git stash

このコマンドを実行すると、現在の変更が保存され、ワーキングディレクトリは直前のコミットの状態に戻ります。

保存にメッセージを追加

保存した変更にメッセージを追加することで、後からその変更内容を見つけやすくすることができます。

以下のコマンドを実行して、メッセージを追加します。

# 現在の作業中の変更を一時的に保存し、メッセージを追加
git stash save "your message"

# 出力結果:Saved working directory and index state On feature2: これは一時保存

保存したstashの一覧表示

保存したstashの一覧を表示するには、以下のコマンドを実行します。

# 保存したstashの一覧を表示
git stash list

#出力:stash@{0}: On feature2: これは一時保存

保存したstashの内容を確認

保存したstashの具体的な内容を確認するには、以下のコマンドを実行します。

# 保存したstashの内容を確認
git stash show stash@{0}

# 出力結果
# test1.txt | 1 +
# 1 file changed, 1 insertion(+)

ここで、stash@{0}は最新のstashを表します。

stash@{1}stash@{2}という形で、古いstashを指定することも可能です。

変更の適用と削除

次に、「Git stash」を使って保存した変更の適用と削除について説明します。

この操作を理解することで、よりGitの運用を柔軟におこなえるはず。

  • Stashの変更をカレントブランチに適用
  • 適用後のstash削除
  • Stashの削除

Stashの変更をカレントブランチに適用

保存したstashを現在のブランチに適用するには、以下のコマンドを使用します。

# 最新のstashを適用
git stash apply

適用後のStash削除

apply コマンドを使ってstashを適用しても、そのstashは削除されません。

stashを適用した後に削除するには、以下のコマンドを使用します。

# 最新のstashを削除
git stash drop

Stashの削除

stashを削除するには、drop コマンドを使用します。

最新のstashを削除するには先程の例のように、git stash drop を実行します。

  • 特定のStashを削除
  • 全てのStashを削除

特定のStashを削除

特定のstashを削除するには、削除したいstashの名前を指定します。

# 特定のstashを削除
git stash drop stash@{0}

全てのStashを削除

すべてのstashを一度に削除するには、以下のコマンドを使用します。

# すべてのstashを削除
git stash clear

高度な「Git stash」利用方法

最後に、より高度な「Git stash」の利用方法について説明します。

これらの操作を使いこなすことで、更に柔軟なGitの運用が可能になるでしょう。

  • 部分的なファイル適用
  • Addせずに変更を退避

部分的なファイル適用

「Git stash」を使用して、特定のファイルだけを一時保存することも可能。

以下のコマンドを実行します。

# 特定のファイルだけをstashに保存
git stash push -- example.txt

Addせずに変更を退避

通常、変更を退避するにはaddコマンドを使用して、変更をステージングエリアに追加する必要があります。

しかし以下のコマンドを使用すると、addせずに変更を退避できます。

# 変更をaddせずにstashに保存
git stash save --include-untracked
# 短いコマンドとしてはこちら。
git stash -u

まとめ

ここまで学んだ「Git stash」の主要なコマンドをまとめます。

  • 変更の保存:git stash save "任意のメッセージ"
  • 変更の保存(addせず):git stash save --include-untracked
  • 保存したstashの一覧表示:git stash list
  • 保存したstashの内容を確認:git stash show stash@{0}
  • 最新のstashを適用:git stash apply
  • 特定のstashを適用:git stash apply stash@{0}
  • 最新のstashを削除:git stash drop
  • 特定のstashを削除:git stash drop stash@{0}
  • すべてのstashを削除:git stash clear
  • 特定のファイルだけをstashに保存:git stash push -- example.txt

「Git stash」を適切に利用することで、複数の作業を効率的におこない、作業の一時保存、切り替え、復帰をスムーズにおこなえるでしょう。

タイトルとURLをコピーしました