Ist es möglich, ohne Pop ganzen Stash und speichern Sie einen anderen ohne diese bestimmte Datei?Ist es möglich, eine einzelne Datei aus dem Git Stash zu löschen?
Antwort
Kurze Antwort: Nein, das ist nicht, wie der Stapel funktioniert. Sie können jedoch Folgendes tun, um das Ergebnis zu erhalten, das Sie suchen.
Unter der Annahme, dass Sie einige andere Änderungen gebunkert haben, machte dann einige weitere Änderungen an Ihrem Index (ursprünglichen Änderungen) und Sie entscheiden, dass Sie diese Änderungen beibehalten möchten, während das Versteck ändern:
#verify the state you are in
git stash list
git status
git stash #push work in progress on the stash
git stash list #check which stash you need
git stash show [email protected]{1} #check the changes in the stash
git stash pop [email protected]{1} #you're now ready to change your 'other' changeset
# hack hack
git stash #modified 'other' change set pushed on the stash
git stash pop [email protected]{1} #your 'original changes'
Ich würde diesen Workflow empfehlen, anstatt den Stash direkt zu ändern. Wenn Sie in Stash-Nummern verloren gehen, können Sie auch verwenden git stash save 'some other changes'
An einem Punkt (wahrscheinlich näher als Sie denken) ist es einfacher, den Überblick über echte Zweige zu behalten.
Sie könnten versuchen, nach dem Stapel knallen, um die Datei als „unverändert“ bunkern wollen nicht markieren:
git update-index --assume-unchanged -- /path/to/file
, und dann beiseite zu schaffen versuchen, wenn die Dateiprüfung enthalten ist oder nicht.
--assume-unchanged
--no-assume-unchanged
Wenn diese Flags angegeben werden, werden die Objektnamen für die Pfade aufgezeichnet nicht aktualisiert.
Stattdessen setzen und deaktivieren diese Optionen das Bit "angenommen unverändert" für die Pfade.Wenn das Bit "assume unverändert" aktiviert ist, überprüft git die Arbeitsbaumdateien auf mögliche Änderungen. Sie müssen das Bit daher manuell zurücksetzen, um git zu informieren, wenn Sie die Arbeitsbaumdatei ändern.
Dies ist manchmal hilfreich, wenn Sie mit einem großen Projekt in einem Dateisystem arbeiten, das einen sehr langsamenlstat(2)
Systemaufruf hat (z. B.cifs
).Diese Option kann auch als ein grobe Dateiebene Mechanismus verwendet werden, unbestätigte Änderungen in getrackten Dateien (ähnlich zu dem, was
.gitignore
tut für untracked-Dateien) zu ignorieren