Historie bearbeiten ohne sie umzuschreiben
Manchmal mochten Sie Historien zusammenspleissen (z.B. einen konvertierten Subversion-Import, der eine Fortsetzung trifft) ohne Commits umzuschreiben.
Grafts (Legacy)
# .git/info/grafts
<child-sha> <new-parent-sha>
Replace-Refs
git replace --graft <child> <new-parent>
git replace --graft v3.0.0 v2.99.0
git replace --convert-graft-file
git replace -d <sha>
git replace -l
Anwendungsfall: Imports zusammenfugen
git replace --graft $(git rev-list --max-parents=0 main | head -1) svn-history-tip
Teilen
git push origin 'refs/replace/*:refs/replace/*'
Vorubergehend deaktivieren
git --no-replace-objects log
GIT_NO_REPLACE_OBJECTS=1 git log
Haufige Fehler
Replace mit Umschreiben verwechseln — Replace andert keine Objekt-SHAs.