Eine alternative Lösung besteht darin, die Änderungen zu committen und diese Commits dann wieder zu entfernen. Dies hat zunächst keinen unmittelbaren Nutzen, eröffnet aber die Möglichkeit, die Änderungen in Stücken zu übertragen und ein Git-Tag für die Sicherung zu erstellen.
Sie können dies auf dem aktuellen Zweig tun, etwa so:
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git revert HEAD
git reset HEAD^^
Oder Sie können es auf dem freistehenden KOPF tun. (vorausgesetzt, Sie beginnen auf dem BRANCHNAME-Zweig):
git checkout --detach HEAD
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git checkout BRANCHNAME
Normalerweise mache ich es jedoch so, dass ich die Übertragungen in Teilen durchführe und dann einige oder alle Übertragungen als "DISCARD: ..." benenne. Dann verwende ich interaktives Rebase, um die schlechten Commits zu entfernen und die guten zu behalten.
git add -p # Add changes in chunks.
git commit -m"DISCARD: Some temporary changes for debugging"
git add -p # Add more stuff.
git commit -m"Docblock improvements"
git tag archive/local-changes-2015-08-01
git rebase -i (commit id) # rebase on the commit id before the changes.
# Remove the commits that say "DISCARD".
Dies ist zwar ausführlicher, ermöglicht aber eine genaue Überprüfung der Änderungen, die Sie verwerfen möchten.
El git lol
y git lola
Shortcuts haben sich bei diesem Arbeitsablauf als sehr hilfreich erwiesen.
1 Stimmen
@Joel & Wayfarer: warum versuchst du nicht
git help reset
ygit help clean
3 Stimmen
Es ist eine gute Idee, dafür einen Alias in der Git-Konfiguration anzulegen ;)