アフィリエイト広告を紹介しています
Working Class Hero:泥臭く、スマートに生き抜く。

汗と汚れの染み込む現場も、キーボードを叩く現場も、どちらも知っている。 元ライン工の僕が、ITの世界で見つけた「少しだけ楽に、自分らしく働くための知恵」を置いておきます。

僕が働き方を変えた理由

【初心者向け】git stashの使い方を徹底解説!作業を一時保存してブランチを切り替える方法

ブランチを切り替えたいのに「変更がコミットされていません」と怒られる…。

今やっている作業を一旦保存して、別のブランチで急ぎの修正をしたい…。

そんな時に使えるのが git stash(ギット スタッシュ) コマンドです。

太郎
太郎

git stashは「作業の一時保存」ができるコマンドです。引き出しに作業を一時的にしまうイメージですね!

git stashとは?

git stashは、現在の作業内容を一時的に退避(保存)するコマンドです。

git stashが必要な場面
  • ブランチを切り替えたいけど、今の変更をコミットしたくない
  • 急ぎのバグ修正が入ったので、今の作業を中断したい
  • 別の機能を先に確認したいけど、作業途中のファイルがある

普通にブランチを切り替えようとすると、未コミットの変更があるとエラーになります。

$ git checkout main
error: Your local changes to the following files would be overwritten by checkout

こんなエラーが出たことありませんか? git stashを使えば、このエラーを回避できます。

git stashの基本的な使い方

ステップ1:作業を一時保存する

git stash

これだけで、変更中のファイルが全て一時保存されます。ワーキングディレクトリはきれいな状態に戻ります。

メッセージをつけて保存する場合:

git stash save "ログイン機能の途中"
太郎
太郎

メッセージをつけておくと、後で「何の作業を保存したか」がわかりやすくなります!

ステップ2:別のブランチで作業する

stashした後は自由にブランチを切り替えられます。

# mainブランチに切り替え
git checkout main

# 急ぎの修正をする
# ...修正作業...

# コミットしてプッシュ
git add .
git commit -m "緊急バグ修正"
git push origin main

ステップ3:元のブランチに戻って作業を復元する

# 元のブランチに戻る
git checkout feature-login

# 保存しておいた作業を復元
git stash pop

git stash pop で、一時保存した作業内容が復元され、stashリストからも削除されます。

git stashのよく使うコマンド一覧

コマンド 説明 よく使う場面
git stash 作業を一時保存 ブランチ切替前
git stash pop 保存した作業を復元(stashから削除) 元のブランチに戻った時
git stash apply 保存した作業を復元(stashに残す) 複数ブランチで同じ変更を使いたい時
git stash list 保存した作業の一覧を表示 何を保存したか確認したい時
git stash drop 指定したstashを削除 不要になったstashを消す時
git stash clear stashを全て削除 全部不要になった時

git stash list(一覧表示)

$ git stash list
stash@{0}: WIP on feature-login: abc1234 ログイン画面作成中
stash@{1}: On main: def5678 デザイン調整の途中

番号(stash@{0}など)で個別に操作できます。

git stash apply(復元するが削除しない)

# 最新のstashを復元(stashリストに残る)
git stash apply

# 特定のstashを復元
git stash apply stash@{1}

popとの違いは、stashリストに残るかどうかです。同じ変更を複数のブランチに適用したい場合は apply が便利です。

VSCodeでgit stashを使う方法

コマンドを打たなくても、VSCodeのGUI操作でstashが使えます

1
ソース管理を開く

左側のサイドバーで「ソース管理」アイコン(分岐のマーク)をクリックします。

2
stashに保存する

ソース管理パネルの「…」メニューから「**Stash**」→「**Stash(未追跡ファイルを含む)**」を選択します。

3
stashから復元する

「…」メニューから「**Stash**」→「**Apply Stash**」または「**Pop Stash**」を選択します。

太郎
太郎

GUIが苦手な方はターミナルで、コマンドが苦手な方はGUIで。好きな方を使いましょう!

git stashでよくあるトラブルと対処法

新規ファイルがstashされない

git stash追跡されているファイルのみを保存します。新しく作ったファイル(untracked files)は保存されません。

対処法:

# 新規ファイルも含めてstash
git stash -u

-uオプション(--include-untracked)をつけると、新規ファイルも一緒にstashされます。

stash popでコンフリクトが発生した

stashした後にブランチで同じファイルが変更されていると、復元時にコンフリクト(競合)が発生することがあります。

対処法:
1. コンフリクトが発生したファイルを開く
2. <<<<<<< Updated upstream>>>>>>> Stashed changes の間を手動で修正
3. 修正後に git add してコンフリクトを解決

Git操作をもっとスムーズにしたいなら

git stashを覚えると、ブランチ切り替えがスムーズになります。

他にもGitの便利な使い方を知りたい方は、以下の記事もチェックしてください。

関連記事
  • [VSCodeでGitHubブランチを削除する方法](/blog/1652/)
  • [git pullでブランチが最新にならない時の対処法](/blog/2220/)
  • [VSCodeのGitHubコミット方法やpush取り消し方法](/blog/2033/)
  • [GitリポジトリをVSCodeにクローンする方法](/blog/233/)

しかし、Gitの操作だけでなくプログラミング全体を体系的に学びたいなら、スクールの活用も検討してみてください。

Git・プログラミングを体系的に学ぶなら

独学で限界を感じていませんか?プロのカリキュラムなら最短でスキルが身につきます。

※無料体験・無料カウンセリングあり

まとめ:git stashで作業の中断・再開を自由自在に

今回は、git stashの使い方を解説しました。

覚えるべきコマンド3つ
  • `git stash` → 作業を一時保存
  • `git stash pop` → 保存した作業を復元
  • `git stash list` → 保存した一覧を確認

git stashを使いこなせば、複数の作業を並行して進めることができるようになります。

「急な修正依頼が来た!」というときも慌てずに対処できますよ!

コメント