Was ist der Unterschied zwischen IntelliJs Shelve und Git Stash?


Antworten:


63

Aus der IntelliJ- Dokumentation :

In der Git-Integration werden neben "Shelving" und "Unhelving" auch "Stashing" und "Unstashing" unterstützt. Diese Funktionen haben vieles gemeinsam. Der einzige Unterschied besteht in der Art und Weise, wie Patches generiert und angewendet werden.

  • Patches mit versteckten Änderungen werden von Git selbst generiert. Um sie später anzuwenden, benötigen Sie IntelliJ IDEA nicht.
  • Patches mit zurückgestellten Änderungen werden von IntelliJ IDEA generiert. Normalerweise werden sie auch über die IDE angewendet. Das Anwenden von Änderungen außerhalb von IntelliJ IDEA ist ebenfalls möglich, erfordert jedoch zusätzliche Schritte.

21
Nun, was sind die Vorteile von Regalen, da sie nur "weniger kompatibel" mit einfachem Git sind?
MaxiWheat

17
Es scheint, als wäre ein Regal nützlich, wenn Sie ein VCS verwenden würden, das keine native Stash-Funktion hat. Wenn Sie Git verwenden, sehe ich keine wirklichen Vorteile.
Daniel Compton

4
Die "wirklichen Vorteile" sind in der Antwort von id.bobr aufgeführt. Die Hauptsache für mich ist, dass ich auswählen kann, welche Dateien / Chunks gespeichert werden sollen, ähnlich wie beim Festschreiben.
Martin Melka

Seit Git 2.13 ist es möglich, einzelne Dateien mit zu verstauen git stash push.
Deric Lima

44

Sie sind ziemlich ähnlich, außer:

  • Sie können Regale nicht außerhalb der IDE verwenden, da dies die Funktion von Intellij ist.
  • Git Stash funktioniert nur mit dem gesamten Arbeitsverzeichnis und Index. Das Regal von IntelliJ kann mit einzelnen Dateien und Änderungslisten arbeiten (eine weitere Funktion von IntelliJ). Wie Sie zum Beispiel hier sehen können , ist es manchmal notwendig.
  • Idea hat eine bessere integrierte Unterstützung für Regale. Das Arbeiten mit Git Stash ist einfacher. Insbesondere können Sie Ihre Änderungen zurückstellen oder freigeben oder zurückgestellte Dateien im Fenster des Versionskontrolltools überprüfen.

Außerdem funktioniert das Regal meiner Meinung nach etwas schneller, insbesondere in einem großen Projekt, in dem viele Dateien geändert wurden.

Weitere Informationen finden Sie in der Dokumentation .


Ich finde es sehr nützlich, mit der rechten Maustaste auf ein Unveränderliches zu klicken, um es schnell zurückzustellen. Wie Sie anspielen, finde ich es etwas schneller.
Wikingersteve

3
"Git Stash funktioniert nur mit dem gesamten Arbeitsverzeichnis und Index" - das ist falsch. Git Stash kann auch einzelne Dateien und Ordner verstauen - zB:git stash -- foo/bar.txt
Chaoz

20

Ein klarer Vorteil von Intellijs Shelve gegenüber Git's Stash besteht darin, dass Sie mit Shelve Änderungen, die zu mehreren Repos gehören, in einer Änderungsliste speichern können. Bei Verwendung von stash müssten Sie jedes Repo einzeln verstauen / entstapeln. Dies ist sehr nützlich in einem großen Projekt mit mehreren Modulen (jedes mit einem eigenen Repo), bei denen eine bestimmte Feature-Arbeit mehrere Module (und damit mehrere Repos) umfassen kann.


0

Hier ist, was die Dokumentation sagt

Das Verstauen von Änderungen ist dem Regalen sehr ähnlich. Der einzige Unterschied besteht in der Art und Weise, wie Patches generiert und angewendet werden. Stashes werden von Git generiert und können innerhalb oder außerhalb von IntelliJ IDEA angewendet werden. Patches mit zurückgestellten Änderungen werden von IntelliJ IDEA generiert und auch über die IDE angewendet. Das Verstecken umfasst auch alle nicht festgeschriebenen Änderungen. Wenn Sie Änderungen an einem Regal vornehmen, können Sie einige der lokalen Änderungen auswählen, anstatt sie alle zu speichern.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.