Es ist schwieriger, nur den Arbeitsbaum (nicht bereitgestellte Änderungen) in Git zu verstecken, als es sein sollte. Die akzeptierte Antwort stashes die unstaged Veränderungen, aber auch die stashes inszeniert Veränderungen (und Blätter sie als gut inszeniert), was selten ist , was Sie wollen.
Dieser Alias funktioniert gut:
stash-working = "!f() { \
git commit --quiet -m \"temp for stash-working\" && \
git stash push \"$@\" && \
git reset --quiet --soft HEAD~1; }; f"
Es schreibt die bereitgestellten Änderungen vorübergehend fest, erstellt einen Stash aus den verbleibenden Änderungen (und ermöglicht die Übergabe zusätzlicher Argumente wie --include-untracked
und --message
als Alias-Argumente) und setzt dann das temporäre Festschreiben zurück, um die bereitgestellten Änderungen zurückzugewinnen.
Es ähnelt der Antwort von @Simon Knapp, weist jedoch einige geringfügige Unterschiede auf: Es verwendet --quiet
die temporären Aktionen, akzeptiert eine beliebige Anzahl von Parametern für den Stash push
, anstatt den Code fest zu codieren -m
, und fügt hinzu--soft
zum Finale bei Zurücksetzen, damit der Index beim Start erhalten bleibt.
Für das entgegengesetzte Problem, nur die inszenierten Änderungen (Alias stash-index
) zu verstecken, siehe diese Antwort .