Ich mag Lukes Antwort, mit der Ausnahme, dass Sie entweder die Basis-Commit manuell angeben müssen, oder verwenden Sie einen Workflow im Rebase-Stil, wo Ihre Geschichte linearisiert wird. Ich schlage eine Modifikation vor, die kein zusätzliches Argument benötigt und die Topologie Ihres Commit-Graphen nicht ändert. Als Shell-Befehl:
git rebase --whitespace=fix --onto $(git merge-base HEAD @{u})
Oder als ~/.gitconfig alias:
ws = "!git rebase --whitespace=fix --onto $(git merge-base HEAD @{u})"
ich dies vorziehen, weil manchmal möchte ich meine Änderungen rebase, aber wenn ich denke, denke, es könnte eine Zusammenführung sein Konflikt Ich ziehe es vor zu verschmelzen, so dass sowohl meine ursprüngliche Änderung als auch die Konfliktlösung in der Geschichte aufgezeichnet werden. So kann ich später die Konfliktlösung nachholen und bei Bedarf wiederholen.
Da ich nicht immer rebase, ich bevorzuge nicht whitespace-fixing mit Rebasing mischen; daher diese Modifikation zu Lukas Antwort.
Zusätzlich aktiviere ich die Standard-Haken pre-commit, die auf Leerzeichen Fehler abgebrochen:
cp .git/hooks/pre-commit.sample .git/hooks/pre-commit
Dieses den folgenden Workflow gibt, die Ich mag, weil es manuell genug ist, dass ich weiß, was los ist, aber automatisiert genug nicht in die Quere zu kommen:
- Hack Hack Hack, einführen Leerzeichen Fehler
- Versuch mit w
- verpflichten nicht zu begehen hitespace Fehler aufgrund von pre-commit Haken
git commit --no-verify
zu begehen sowieso
git ws
den Alias verwenden
Hinweis auf die Verwendung von --onto
zu beheben: Es ist hier nicht nötig, aber ich finde es einfacher, über die Vernunft wie funktioniert das Rebase? In Lukes Version HEAD~3
ist die <upstream>
in der man-Seite, während in meiner Version <upstream>
behält seinen Standardwert der realen upstream der Branche. Sie landen jedoch mit dem gleichen Ergebnis.
Meinst du "' git add -Ae' fügt keine neuen Dateien hinzu? " Oder: "Die Dateien sind hinzugefügt, aber nicht behoben"? – VonC
@VonC Es funktioniert nicht für Dateien, die nicht geparkt oder neu sind (zum ersten Mal hinzugefügt, aber noch nicht festgeschrieben). Für mich zeigt es 'fatal: Leerer Patch. Abgebrochen. "Ich verwende git Version 1.8.3.msysgit.0. – loop
@test: Wenn du einen Kommentar zu meiner ursprünglichen Antwort hinterlassen hättest, entweder gefragt hast, wie ich meinen Befehl ausführen soll oder auf deine Frage verlinken würde, hätte ich eine Benachrichtigung erhalten und dir von 'add -N 'erzählt. Aber, SO war schlau genug, Ihre Frage in den Abschnitt "Verwandte" zu stellen, also sah ich es, als ich meine Antwort heute redigierte. – ntc2