Ich bin mit dem shelve
Aspekt von Git sehr unbekannt . Wenn stash
verwendet wird, um unfertige Arbeiten beiseite zu legen, was ist shelve
dann? Wofür würden Sie es verwenden?
Zum Beispiel bei Update Project (aus dem VCS-Menü)
man wird bekommen (in Idee 2019.2)
git
intellij-idea
jetbrains-ide
Edgar Martinez
quelle
quelle
shelve
ist kein Git-Befehl. Was ist der Kontext für diese Frage, woher kommen diese Begriffe?shelve
existiert in einigen anderen Tools, ist aber nicht Teil von git.shelve
in bzr, hg usw. Beziehen Sie sich auf ein Git-Interoperabilitätspaket?Antworten:
git shelve
existiert nicht in Git.Nur
git stash
:Sie hatten ein 2008 altes Projekt- Git-Regal , um Änderungen in einem Zweig zu isolieren, aber das wäre heutzutage nicht sehr nützlich.
Wie im Intellij IDEA-Shelf-Dialog dokumentiert , ist die Funktion " Shelving and Unhelving " nicht mit einem VCS (Version Control System Tool) verknüpft, sondern mit der IDE selbst, um ausstehende Änderungen, die Sie noch nicht in der Änderungsliste festgeschrieben haben, vorübergehend zu speichern.
Beachten Sie, dass Sie seit Git 2.13 (Q2 2017) jetzt auch einzelne Dateien speichern können .
quelle
git stash && <your actual command> && git stash pop
aber das ist scheiße. Auto-Shelve und Apply ist näher an dem, was wir brauchen.Bei der Verwendung von JetBrains-IDEs mit Git werden neben dem Ein- und Auslagern auch Aktionen zum Ein- und Auslagern unterstützt. Diese Funktionen haben viele Gemeinsamkeiten: Der Hauptunterschied besteht in der Art und Weise, wie Patches generiert und angewendet werden. Shelve kann entweder mit einzelnen Dateien oder Bündeln arbeiten von Dateien, während Stash nur mit einer ganzen Reihe geänderter Dateien gleichzeitig arbeiten kann. Hier sind einige weitere Details zu den Unterschieden zwischen ihnen. "
quelle
git stash -p
was beide übertrumpft. Leider nur in der Kommandozeile.Zusätzlich zu früheren Antworten gibt es eine wichtige Anmerkung für mich:
shelve
JetBrains ist es, Produkte Merkmal (wieWebStorm
,PhpStorm
,PyCharm
usw.). Es legt zurückgestellte Dateien in ein.idea/shelf
Verzeichnis.stash
ist eine dergit
Optionen. Versteckte Dateien werden unter dem.git
Verzeichnis abgelegt .quelle
Ich würde es vorziehen, Änderungen zurückzustellen, anstatt sie zu speichern, wenn ich meine Änderungen nicht an anderer Stelle teile.
Stashing ist eine Git-Funktion und bietet Ihnen nicht die Möglichkeit, bestimmte Dateien oder Änderungen in einer Datei auszuwählen. Shelving kann das, aber dies ist eine IDE-spezifische Funktion, keine Git-Funktion:
Wie Sie sehen, kann ich festlegen, welche Dateien / Zeilen in mein Regal aufgenommen werden sollen. Beachten Sie, dass ich das nicht mit Verstecken machen kann.
Beachten Sie, dass die Verwendung von Regalen in der IDE die Portabilität Ihrer Patches möglicherweise einschränkt, da diese Änderungen nicht in einem .git-Ordner gespeichert werden.
Einige hilfreiche Links:
quelle