834 Stimmen

git stash apply version

Ich habe 2 Zweige: master | design

Bei der Arbeit im Entwurfsmodus habe ich einen Vorrat angelegt, dann zum Master gewechselt und einige Anpassungen vorgenommen. Ich wechselte zurück zum Design und machte eine stash apply nur um alle meine Änderungen im Entwurfszweig zu verlieren.

Ich hoffe, dass sich alle meine Arbeiten in einem Versteck befinden, da ich diese noch nicht geräumt oder entfernt habe.

Wenn ich eine Vorratsliste erstelle, erhalte ich 4 Ergebnisse:

stash@{0}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{1}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{2}: WIP on design: eb65635... Email Adjust
stash@{3}: WIP on design: eb65635... Email Adjust

Wenn ich versuche git stash apply f2c0c72 Ich erhalte eine Fehlermeldung:

fatal: Needed a single revision
f2c0c72: no valid stashed state found

Wie kann ich einen bestimmten Vorrat anwenden?

1423voto

araqnid Punkte 116680

Die Schlüssel zum Versteck sind eigentlich die stash@{n} Artikel auf der linken Seite. Versuchen Sie es also:

git stash apply stash@{0}

(Beachten Sie, dass Sie in einigen Shells die folgenden Angaben machen müssen "stash@{0}" (z.B. zsh, fish und powershell).

Seit Version 2.11 ist es ziemlich einfach, Sie können die N-Stack-Nummer verwenden, anstatt die stash@{n} . Anstatt also zu verwenden:

git stash apply "stash@{n}"

Sie können tippen:

git stash apply n

Um eine Liste der Verstecke zu erhalten:

git stash list

In der Tat stash@{0} ist eine Revision in Git, zu der man wechseln kann... aber git stash apply ... sollten Sie herausfinden, wie Sie DTRT auf Ihren aktuellen Standort anwenden können.

294voto

dwlz Punkte 10320

Um einen Vorrat anzuwenden und ihn aus der Vorratsliste zu entfernen, führen Sie aus:

git stash pop stash@{n}

Um einen Zwischenspeicher anzuwenden und ihn im Zwischenspeicher-Cache zu behalten, führen Sie aus:

git stash apply stash@{n}

77voto

Pau Punkte 13014

Seit Version 2.11 ist es ziemlich einfach, Sie können die N-Stack-Nummer verwenden, anstatt zu sagen "stash@{n}" . Anstatt also zu verwenden:

git stash apply "stash@{n}"

Sie können tippen:

git stash apply n

Zum Beispiel in Ihrer Liste:

stash@{0}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{1}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{2}: WIP on design: eb65635... Email Adjust
stash@{3}: WIP on design: eb65635... Email Adjust

Wenn Sie sich bewerben möchten stash@{1} könnten Sie tippen:

git stash apply 1

Andernfalls können Sie es verwenden, auch wenn Sie einige Änderungen in Ihrem Verzeichnis seit 1.7.5.1 haben, aber Sie müssen sicher sein, dass der Vorrat nicht Ihr Arbeitsverzeichnis überschreibt, wenn dies der Fall ist, erhalten Sie eine Fehlermeldung:

error: Your local changes to the following files would be overwritten by merge:
        file
Please commit your changes or stash them before you merge.

In Versionen vor 1.7.5.1 funktionierte es nicht, wenn das Arbeitsverzeichnis geändert wurde.


Git-Versionshinweise:

Der Benutzer muss immer "stash@{$N}" sagen, wenn er ein einzelnes Element benennt im Standardspeicherort des Stash, d.h. reflogs in refs/stash. Der Befehl "git stash" hat gelernt, "git stash apply 4" als Kurzform für "git stash apply stash@{4}" zu akzeptieren.

git stash apply" weigerte sich früher, zu arbeiten, wenn es eine Änderung im Arbeitsbaum gab, selbst wenn die Änderung sich nicht mit der Änderung überschnitt, die stash aufgezeichneten

46voto

jterry Punkte 5979

Wenn man sich auf einem Windows-Rechner und in PowerShell befindet, muss man das Argument wie folgt angeben:

git stash apply "stash@{0}"

...oder um die Änderungen zu übernehmen und aus dem Vorrat zu entfernen:

git stash pop "stash@{0}"

Ohne die Anführungszeichen kann es sonst zu dieser Fehlermeldung kommen:

fatal: zweideutiges Argument 'stash@': unbekannte Revision oder Pfad nicht im dem Arbeitsbaum.

29voto

git stash list 

Die Liste zeigt alle versteckten Elemente, z.B.:stash@{0}:,stash@{1}:, ,stash@{n}:

Wählen Sie dann die Zahl n, die stash@{n} bezeichnet:

git stash apply n 

zum Beispiel:

git stash apply 1 

wendet die betreffenden versteckten Änderungen auf den aktuellen Zweig an

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