IntelliJはgit stashと、組み込みのshelveコマンドをサポートしています。これらは、目的と実用性がほぼ同じであると思われます。それらの違いは何ですか?
IntelliJから ドキュメント :
Gitの統合では、シェルフとアンシェルフに加えて、「スタッシング」と「アンスタッシング」がそれぞれサポートされています。これらの機能には多くの共通点がありますが、唯一の違いはパッチの生成方法と適用方法です。
- 隠された変更を含むパッチは、Git自体によって生成されます。それらを後で適用するために、IntelliJ IDEAは必要ありません。
- 変更が保留されたパッチは、IntelliJ IDEAによって生成されます。通常、これらはIDEからも適用されます。保留された変更をIntelliJ IDEAの外部に適用することも可能ですが、追加の手順が必要です。
以下を除いて、これらはかなり似ています。
また、特に多くのファイルが変更された大きなプロジェクトでは、shelveは少し速く動作します。
詳細については、 documentation をご覧ください。
IntellijのShelveが単純なGitの隠し場所と比較して明確な利点の1つは、Shelveを使用すると、複数のリポジトリに属する変更を1つのチェンジリストに保存できることです。 stashを使用すると、各リポジトリで個別にstash/unstashする必要があります。これは、特定の機能が複数のモジュール(したがって複数のリポジトリ)にまたがる複数のモジュール(それぞれに独自のリポジトリがある)を持つ大規模なプロジェクトで非常に便利です。
ドキュメント の内容
スタッシングの変更は、棚に非常に似ています。唯一の違いは、パッチの生成方法と適用方法です。スタッシュはGitによって生成され、IntelliJ IDEA内または外部から適用できます。変更が保留されたパッチは、IntelliJ IDEAによって生成され、IDEからも適用されます。また、スタッシングには、コミットされていないすべての変更が含まれますが、シェルフに変更を加えると、すべてを保留するのではなく、ローカルの変更の一部を選択できます。