524 Stimmen

Git Stash vs Ablegen in IntelliJ IDEA/Netbeans

Ich bin sehr unfamiliär mit dem shelve Aspekt von Git (EDIT: kein Aspekt von Git, sondern eher eine IntelliJ IDEA Funktion von shelve).

Wenn stash verwendet wird, um unfertige Arbeit beiseite zu legen, wofür wird dann shelve verwendet? Wofür würdest du es verwenden?

Zum Beispiel auf Update Project (aus dem VCS-Menü)

Update Project Option

wird man (in IntelliJ IDEA 2019.2) erhalten

Update Project Prompt Window

450voto

VonC Punkte 1117238

git shelve existiert nicht in Git.

Nur git stash:

  • wenn du den aktuellen Zustand des Arbeitsverzeichnisses und des Index aufzeichnen möchtest, aber zum sauberen Arbeitsverzeichnis zurückkehren möchtest.
  • welcher deine lokalen Änderungen speichert und das Arbeitsverzeichnis auf den HEAD-Commit zurücksetzt.

Im Jahr 2008 gab es ein altes Projekt git shelve, um Änderungen in einem Branch zu isolieren, aber das wäre heutzutage nicht sehr nützlich.

Wie in Intellij IDEA shelve dialog dokumentiert, ist die Funktion "shelving and unshelving" nicht mit einem VCS (Version Control System-Tool) verknüpft, sondern mit der IDE selbst, um vorübergehend Änderungen zu speichern, die du noch nicht in einem Changelist committed hast.

Beachte, dass du seit Git 2.13 (Q2 2017) auch einzelne Dateien stashed kannst.

260voto

Yekver Punkte 4735

Wenn Sie JetBrains-IDEs mit Git verwenden, werden "stashing- und unstashing-Aktionen zusätzlich zu shelving und unshelving unterstützt. Diese Funktionen haben viele Gemeinsamkeiten; der Hauptunterschied liegt in der Art und Weise, wie Patches generiert und angewendet werden. Shelving kann entweder mit einzelnen Dateien oder einer Gruppe von Dateien arbeiten, während Stash nur mit einer ganzen Gruppe von geänderten Dateien gleichzeitig arbeiten kann. Hier sind einige weitere Details zu den Unterschieden zwischen ihnen."

131voto

valex Punkte 4167

Zusätzlich zu den bisherigen Antworten gibt es eine wichtige Anmerkung für mich:

shelve ist eine Funktion von JetBrains-Produkten (wie WebStorm, PhpStorm, PyCharm usw.). Es legt geshelvte Dateien in das Verzeichnis .idea/shelf.

stash ist eine der Optionen von git. Es platziert gestashte Dateien unter dem Verzeichnis .git.

39voto

Hamza Belmellouki Punkte 2022

Ich würde es vorziehen, Änderungen abzulegen, anstatt sie zu verbergen, wenn ich meine Änderungen an anderer Stelle nicht teile.

Stashing ist eine Git-Funktion und gibt Ihnen nicht die Möglichkeit, bestimmte Dateien oder Änderungen innerhalb einer Datei auszuwählen. Shelving kann das, aber dies ist eine IDE-spezifische Funktion, keine Git-Funktion:

Bildbeschreibung hier eingeben

Wie Sie sehen können, kann ich wählen, welche Dateien/Zeilen in meinem Regal enthalten sein sollen. Beachten Sie, dass das mit dem Verbergen nicht möglich ist.

Bitte beachten Sie, dass die Verwendung von Regalen in der IDE die Portabilität Ihrer Patches einschränken kann, da diese Änderungen nicht in einem .git-Ordner gespeichert sind.

Einige hilfreiche Links:

6voto

O_K Punkte 712

Shelf ist ein JetBrains-Feature, während Stash ein Git-Feature für dieselbe Arbeit ist. Sie können mit beiden Funktionen problemlos zu einem anderen Branch wechseln, ohne zu committen und ohne Arbeitsdaten zu verlieren. Meine persönliche Erfahrung ist die Verwendung von Shelf.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X