1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pull 前の stash?それとも shelf?違いを整理してみた

Posted at

はじめに

Git を使っていると、git pull の前に「ローカルの変更をどう扱うか」で初心者のうちは迷うことが多いかと思います。

特に IDEA 系(IntelliJ, PyCharm など)の IDE を使っていると 「stash」 と 「shelf」 の両方が登場するので、「どっちを使えばいいの?」と混乱しがちです。

今回はそれぞれの仕組みを整理し、pull 前にどちらを使うべきかまとめました。

stash とは

git stash は Git 標準の機能で、作業中の変更を一時的に「隠す」仕組みです。

git stash 
git stash pop
git stash list 
# など
  • 変更は Git リポジトリ内部 に保存される
  • リモートや他の環境と共有可能(stash の内容をパッチ化できる)
  • 一時的にワークツリーをクリーンにして git pull や git checkout を安全に実行できる

特徴として、stash はあくまで Git による管理の一部であるため、CI/CD やチーム開発の場でも 「標準機能」 として通用します。

shelf とは

一方で shelf(シェルフ) は、IntelliJ 系 IDE が提供する独自の機能です。
言ってしまえば「IDE 専用の stash」。

  • IDE 内の UI から使える
  • 保存先は IDE 内のローカル環境(Git とは無関係)
  • 「未完成のコードを一時退避して別作業をしたい」ときに便利
  • Git の履歴には残らないのでチーム共有は不可

つまり shelf は「IDE 内に置いておく作業メモ」的な役割で、Git 本体とは関係しません。

違いの整理表

項目 stash (Git) shelf (IDE)
保存先 Git リポジトリ内部 IDE のローカル環境
共有性 チームと共有可能(パッチ化可) 共有不可(自分の環境限定)
操作方法 Git コマンド IDE の GUI
主な用途 pull/checkout のために一時退避 作業中断・試行錯誤コードの保管
消える可能性 基本残る(手動で削除) IDE 設定に依存、環境移行で消える場合あり

pull 前に使うならどっち?

結論から言えば、pull 前には stash を使うのが基本 です。

  • git pull で競合が起きても Git 側で整合性を管理できる
  • stash は Git の履歴として扱えるため、安全性が高い
  • チーム開発では「stash した → pop した」が共通のワークフローになる

一方、shelf は pull 前には不向きです。
ただし「ちょっと試したコードを一旦退避しておきたい」「実験的な実装を残したい」といったケースでは shelf の方が気軽に使えるので、用途次第で使い分けるとよいでしょう。

まとめ

stash … Git 標準機能、pull 前や checkout 前の一時退避に最適

shelf … IDE 独自機能、作業メモや実験コードの保管に便利

pull 前に迷ったら stash 一択

IDE を日常的に使っていると「shelf があるしこっちでいいか」と思いがちですが、Git の管理下で安全に運用したい場面では stash を選びましょう!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?