Es gibt keine Möglichkeit, sie zu entfernen, ohne den Verlauf zu ändern, also wenn jemand die Änderungen gezogen hat, müssen Sie möglicherweise mit diesem Chaos umgehen - siehe recovering from upstream Rebase in man git-rebase
. Das kann ziemlich schlecht sein, abhängig von Ihrem Arbeitsablauf - auf die eine oder andere Weise müssen Sie wahrscheinlich alle darauf aufmerksam machen, dass sie zum "neuen" Master-Zweig wechseln müssen, wobei alle laufenden Arbeiten neu hinzugebaut werden müssen.
Wenn die Festschreibung noch an der Spitze sind Sie, bevor es den Commit zurückgesetzt könnten:
git reset --hard HEAD^
oder ändern:
git rm test.wav
git commit --amend
Aber da es nicht mehr an der Spitze, Ihr Die beste Wette ist wahrscheinlich, es wahrscheinlich mit einer interaktiven Rebase zu tun:
Ändern Sie "wählen" auf "bearbeiten" auf der verpflichten Sie sich zu beheben, dann haben Sie es! (Oder sogar die ganze entfernen begehen, wenn das in Ordnung ist) *
Nachdem Sie Welche dieser fertig tun Sie wählen, werden Sie die Push zwingen müssen, da es nicht mehr ist ein Vorspulen:
git push -f origin
* Wenn Sie nachträglich Änderungen an diesen Dateien vorgenommen haben, erhalten Sie Probleme, wenn Sie in der Rebase fortfahren. Sie sollten einfach zu handhaben sein, da Sie nur die Dateien weg haben wollen. Natürlich, wenn es seither 100 Commits gegeben hat, die alle Konflikte verursachen, können Sie sich git-filter-branch
ansehen. Das entsprechende Beispiel aus dem man page ist:
git filter-branch --index-filter ’git rm --cached --ignore-unmatch filename’ HEAD
Das eigentliche Problem hier wahrscheinlich wird Geschichte zu umschreiben, die andere bereits gezogen haben - es gibt viele Beiträge hier wie auch Dinge, die Sie finden können mit Google, der sich mit diesem speziellen Problem beschäftigt, außer dem Man-Seitenabschnitt, den ich in meiner Antwort erwähnt habe. – Cascabel
Nun bin ich der einzige Committer auf dem Projekt, so dass es die Dinge in dieser Hinsicht ein wenig leichter macht. –