web-dev-qa-db-ja.com

Git Shelve対Stash

私はGitのshelveの側面にはあまり慣れていません。未完成の作業を脇に置くためにstashを使用した場合、shelveとは何でしょうか。何に使うの?

188
Edgar Martinez

git shelveはGitには存在しません。

git stash のみ

  • 作業ディレクトリとインデックスの現在の状態を記録したいが、クリーンな作業ディレクトリに戻りたい場合。
  • これにより、ローカルの変更が保存され、作業ディレクトリがHEAD commitと一致するように元に戻されます。

ブランチの変更を隔離するための2008年の古いプロジェクト git shelve を持っていましたが、今日ではそれはあまり役に立ちません。

Intellij IDEA shelve dialog で説明されているように、機能 " shelving and unshelving "はVCS(バージョン管理システムツール)ではなくリンクされています。まだコミットしていない保留中の変更をチェンジリストに一時的に保存するためのIDEそれ自体。

Git 2.13(2017年第2四半期)以降は、個々のファイルも隠すことができます

183
VonC

GitでJetBrains IDEを使用する場合、「保留と保留解除に加えて、隠しアクションと隠しアクションがサポートされています。これらの機能には共通点があります。大きな違いは、パッチの生成と適用方法です。 Stashは一度に大量の変更されたファイルでしか操作できませんが、それらの違いについては、いくつかの 詳細 があります。 "

168
Yekver

以前の回答に加えて、私にとって重要なことが1つあります。

shelveはJetBrains製品の機能です(WebStormPhpStormPyCharmなど)。それは棚に置かれたファイルを.idea/shelfディレクトリに置きます。

stashgitオプションの1つです。隠しファイルを.gitディレクトリの下に置きます。

45
valex