1101 Stimmen

Wie kann ich eine einzelne Datei (oder Änderungen an einer Datei) aus einem Git-Stash extrahieren?

Ist es möglich, eine einzelne Datei oder ein Diff einer Datei aus einem Git Stash zu extrahieren, ohne das Stash Changeset zu löschen?

19voto

cambunctious Punkte 6559

Verwenden Sie die folgenden Schritte, um die Änderungen an einer Datei in einem Stash in Ihren Arbeitsbaum zu übernehmen.

git diff stash^! -- <filename> | git apply

Dies ist im Allgemeinen besser als die Verwendung von git checkout weil Sie keine Änderungen an der Datei verlieren, die Sie seit der Erstellung des Verstecks vorgenommen haben.

11voto

Nathan Kitchen Punkte 4561

Sie können den Diff für ein Versteck mit " git show stash@{0} " (oder wie auch immer die Nummer des Verstecks lautet; siehe "git stash list"). Es ist einfach, den Abschnitt des Diffs für eine einzelne Datei zu extrahieren.

5 Stimmen

Für Leute wie mich ist es noch einfacher: Verwenden Sie git show stash um das oberste Versteck anzuzeigen (normalerweise das einzige, das Sie haben). Auf ähnliche Weise können Sie den Unterschied zwischen Ihrem aktuellen Zweig und dem Stash anzeigen mit git diff head stash .

5voto

Philluminati Punkte 2290

Das einfachste, wenn auch vielleicht nicht das beste Konzept ist, dass Sie drei Dateien geändert haben und eine Datei zwischenlagern wollen.

Wenn Sie das tun git stash um sie alle zu verstauen, git stash apply um sie wieder zurückzubringen und dann git checkout f.c auf die betreffende Datei, um sie effektiv zurückzusetzen.

Wenn Sie diese Datei entpacken möchten, führen Sie einen git reset --hard und führen Sie dann git stash apply wiederum unter Ausnutzung der Tatsache, dass git stash apply löscht die Differenz nicht aus dem Stash-Stapel.

1voto

Wenn die versteckten Dateien mit der aktuellen Version zusammengeführt werden müssen, verwenden Sie die vorherigen Methoden mit diff. Ansonsten können Sie git pop um sie zu entladen, git add fileWantToKeep für die Bereitstellung Ihrer Datei, und führen Sie eine git stash save --keep-index zum Verstauen von allem, was nicht auf der Bühne ist. Denken Sie daran, dass der Unterschied zwischen dieser Methode und den vorherigen darin besteht, dass die Datei aus dem Versteck "herausgeholt" wird. Die vorherigen Antworten behalten sie git checkout stash@{0} -- <filename> damit es nach Ihren Bedürfnissen geht.

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