Versteck Ohne die stufenweisen Veränderungen
Das Problem mit --keep-index
/ -k
Das Speichern nur des Arbeitsbaums (unstaged changes) in Git ist schwieriger als es sein sollte. Die akzeptierte Antwort und einige andere Antworten verbergen die unstaged changes und lassen den stage allein, wie es über --keep-index
.
Was jedoch nicht offensichtlich ist, ist, dass --keep-index
auch Verstecke die schrittweisen Änderungen. Die inszenierten Änderungen landen sowohl auf der Bühne als auch im Versteck. Dies ist in den seltensten Fällen erwünscht, da jede zwischenzeitliche Änderung des Verstecks zu Konflikten führen kann, wenn das Versteck später geknackt wird.
Alias-Lösung
Dieser Alias funktioniert gut, um die nur die Arbeitskopie ändert:
stash-working = "!f() { \
git commit --quiet --no-verify -m \"temp for stash-working\" && \
git stash push \"$@\" && \
git reset --quiet --soft HEAD~1; }; f"
Es überträgt die bereitgestellten Änderungen vorübergehend, erstellt einen Stash aus den verbleibenden Änderungen (und erlaubt zusätzliche Argumente wie --include-untracked
y --message
als Alias-Argumente übergeben werden), und setzt dann die temporäre Übergabe zurück, um die bereitgestellten Änderungen wiederherzustellen.
Sie ist ähnlich wie die von @Simon Knapp Antwort mit ein paar kleinen Unterschieden - es verwendet --quiet
über die vorübergehenden Aktionen und akzeptiert eine beliebige Anzahl von Parametern für den Vorrat push
zu verwenden, anstatt die -m
und es fügt hinzu --soft
bis zum endgültigen Zurücksetzen, damit der Index so bleibt, wie er begonnen hat. Außerdem verwendet er --no-verify
beim Commit, um Änderungen an der Arbeitskopie durch Pre-Commit-Hooks zu vermeiden (HT: @Granfalloner).
Für das gegenteilige Problem, nur die abgestuften Änderungen zu speichern (alias stash-index
) siehe diese Antwort .