wake-up-neo.com

Was ist der Unterschied zwischen IntelliJs Shelve- und Git-Speicher?

IntelliJ unterstützt sowohl Git-Stashes als auch einen eingebauten Shelve-Befehl. Diese scheinen in Zweck und Nutzen nahezu identisch zu sein. Was ist der Unterschied zwischen ihnen?

67
Daniel Compton

Aus der IntelliJ Dokumentation :

Bei der Git-Integration werden zusätzlich zum Ablegen und Aufheben der Sperre "Ablagern" bzw. "Ablagern" unterstützt. Diese Funktionen haben viele Gemeinsamkeiten, der einzige Unterschied besteht in der Art und Weise, wie Patches generiert und angewendet werden.

  • Patches mit veralteten Änderungen werden von Git selbst generiert. Um sie später anwenden zu können, benötigen Sie keine IntelliJ IDEA.
  • Patches mit versetzten Änderungen werden von IntelliJ IDEA generiert. Normalerweise werden sie auch über die IDE angewendet. Das Anwenden von hinterlegten Änderungen außerhalb von IntelliJ IDEA ist ebenfalls möglich, erfordert jedoch zusätzliche Schritte.
48
Daniel Compton

Sie sind ziemlich ähnlich, außer:

  • Sie können Shelve nicht außerhalb von IDE verwenden, da dies die Funktion von Intellij ist.
  • Git-Stash funktioniert nur mit dem gesamten Arbeitsverzeichnis und dem Index. Das IntelliJ-Regal kann mit einzelnen Dateien und Änderungslisten arbeiten (ein weiteres Feature von IntelliJ). Wie Sie zum Beispiel hier sehen können, ist es manchmal notwendig.
  • Idea hat eine bessere Unterstützung für das Regal. Die Arbeit mit Git Stash ist einfacher. Insbesondere können Sie die Änderungen in den Versionskontrolle-Tool-Fenster zurücknehmen/deaktivieren.

IMHO arbeitet Shelf etwas schneller, vor allem in großen Projekten, wenn viele Dateien geändert wurden.

Weitere Informationen finden Sie in der Dokumentation documentation .

23
id.bobr

Ein entscheidender Vorteil, den Intellijs Shelve gegenüber einfachem Gits Versteck hat, besteht darin, dass Sie mit Shelve Änderungen speichern können, die zu mehreren Repos gehören, in einer Änderungsliste. Bei Verwendung von Stash müssten Sie jedes Repo einzeln ein- oder auslagern. Dies ist sehr nützlich in einem großen Projekt mit mehreren Modulen (jedes mit einem eigenen Repo), bei dem eine bestimmte Feature-Funktion mehrere Module (und daher mehrere Repos) überschneiden kann.

8
riyasvaliya

Hier ist, was Documentation sagt

Das Einlagern von Änderungen ist sehr ähnlich wie bei Regalen. Der einzige Unterschied besteht darin, wie Patches generiert und angewendet werden. Stashes werden von Git generiert und können von IntelliJ IDEA oder außerhalb angewendet werden. Patches mit versetzten Änderungen werden von IntelliJ IDEA generiert und auch über die IDE angewendet. Das Einlagern umfasst auch alle nicht festgeschriebenen Änderungen. Wenn Sie jedoch Änderungen an einem Regal vornehmen, können Sie einige der lokalen Änderungen auswählen, anstatt sie alle aufzuheben.

0
Astha