558 Stimmen

Nur eine einzige Datei aufbewahren

Ich würde gerne nur die Änderungen aus einer einzigen Datei speichern:

git stash save -- just_my_file.txt

Die obige Lösung funktioniert jedoch nicht. Gibt es Alternativen?

635voto

sealocal Punkte 8580

Wenn Sie keine Nachricht mit Ihren versteckten Änderungen angeben möchten, geben Sie den Dateinamen nach einem Doppelstrich an.

$ git stash -- filename.ext

Wenn es sich um eine nicht verfolgte/neue Datei handelt, müssen Sie sie zuerst bereitstellen.

Wenn Sie jedoch faire eine Nachricht angeben möchten, verwenden Sie push .

git stash push -m "describe changes to filename.ext" filename.ext

Beide Methoden funktionieren in den Git-Versionen 2.13+

269voto

Wes Hardaker Punkte 20804

Ich denke stash -p ist wahrscheinlich die richtige Wahl, aber für den Fall, dass Sie in Zukunft auf andere, noch kompliziertere Dinge stoßen, denken Sie daran:

Stash ist eigentlich nur eine sehr einfache Alternative zu dem nur wenig komplexeren branch Sets. Stash ist sehr nützlich, um Dinge schnell zu verschieben, aber Sie können komplexere Dinge mit Zweigen erreichen, ohne viel mehr Kopfschmerzen und Arbeit zu haben.

# git checkout -b tmpbranch
# git add the_file
# git commit -m "stashing the_file"
# git checkout main

tun und lassen, was man will, und dann später einfach rebase und/oder merge die tmp-Branche. Es ist wirklich nicht dass viel zusätzliche Arbeit, wenn man eine sorgfältigere Nachverfolgung durchführen muss, als es der Vorrat zulässt.

69voto

Benjamin Bannier Punkte 50065

Sie können einzelne Zeilen interaktiv speichern mit git stash -p (analog zu git add -p ).

Es braucht keinen Dateinamen, aber man kann andere Dateien einfach überspringen mit d bis Sie die Datei erreicht haben, die Sie speichern möchten, und speichern Sie dort alle Änderungen mit a .

28voto

CharlesB Punkte 80104

Die beste Möglichkeit ist, alles außer dieser Datei zu verlagern und stash anzuweisen, den Index mit git stash save --keep-index und versteckt so Ihre nicht bereitgestellte Datei:

$ git add .
$ git reset thefiletostash
$ git stash save --keep-index

Wie Dan hervorhebt, thefiletostash ist die einzige, die durch das Versteck zurückgesetzt wird, aber es versteckt auch die anderen Dateien, also ist es nicht genau das, was Sie wollen.

13voto

Devesh Punkte 821

Nur für den Fall, dass Sie tatsächlich "Änderungen verwerfen" meinen, wenn Sie "git stash" benutzen (und nicht wirklich git stash benutzen, um es vorübergehend zu speichern), können Sie in diesem Fall verwenden

git checkout -- <file>

Beachten Sie, dass Git Stash nur eine schnellere und einfachere Alternative zum Verzweigen und Erledigen von Dingen ist.

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