den aktuellen Repository Zustand Unter der Annahme, ist dies:
server: A---B---C---D
^master
workstation: A---B---C---D
^HEAD
^master
^origin/master
Und der gewünschte Zustand ist dies:
server: A---B
^master
workstation: A---B---C---D
^HEAD
^master
^origin/master
Dann, was Sie können dorthin tun, ist dies:
$ git push --force origin bbbbbbbb:master
Dabei ist bbbbbbbb
der Commit-Hash von B.
Hinweise:
- Wie bei allen
--force
, seien Sie vorsichtig. Sie können sich an einen Ort begeben, der schwer zu erreichen ist.
- Stellen Sie sicher, dass alle Ihre Teammitglieder wissen, was Sie tun. Sie können C und D versehentlich wieder in das Repository verschieben, wenn sie ihr eigenes Repository nach dem Drücken nicht korrekt aktualisieren.
- Wenn andere Tags/Zweige auf C und D verweisen, bleiben sie dort zugänglich.
- Commits C und D und alle Änderungen in ihnen können nicht sofort gelöscht werden. Sie werden zu einem unbestimmten Zeitpunkt in einem Garbage-Collection-Pass entfernt.
Arbeiten an einem separaten Zweig. –
Erstellen Sie einen neuen Zweig für die Commits, die Sie behalten möchten (in Ihrem lokalen Repository) mit 'git branch -b KeepThisBranch SHAofCommitToKeep'. Entfernen Sie dann die Commits wie gewohnt aus dem alten Zweig in GitHub. – Gregg