2009-10-20 12 views
8

Ich habe aus Versehen einige große Test-WAV-Dateien in mein Repository geschrieben und sie verbrauchen viel Speicherplatz auf meinem Github-Konto. Wie kann ich diese Dateien aus dem Verlauf entfernen?So reduzieren Sie die Größe eines Repos auf Github

Hinweis: Diese Dateien wurden vor einiger Zeit commited und sind nicht auf dem HEAD commit.

+0

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

+1

Nun bin ich der einzige Committer auf dem Projekt, so dass es die Dinge in dieser Hinsicht ein wenig leichter macht. –

Antwort

11

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 

2
  1. Entfernen Sie es aus Ihrer lokalen Verlauf in der Branche, wo Sie es begangen haben. Ein Weg, dies zu tun, ist git commit --amend, wenn es Ihr HEAD Commit ist; ein anderes ist git rebase --interactive.
  2. Force drücken Sie den aktualisierten Zweig zu Github.

    git push --force github 
    

    (wo github der Name Ihrer Fernbedienung für GitHub ist).

Dies wird es aus dem aktiven Verlauf entfernen. Um den Speicherplatz tatsächlich zurückzugewinnen, muss GitHub eine Speicherbereinigung durchführen. Ich bin mir nicht sicher, wie ich das explizit machen könnte, wenn sie es nicht automatisch machen. Möglicherweise müssen Sie eine Supportanfrage stellen.

+6

GitHub Müll sammelt nach jeder Repository-Operation. –

+0

@ JörgWMittag - bist du dir sicher? Ich habe Äste gedrängt, nachdem ich sie aus alten großen Dateien gereinigt hatte, und auf GitHub ist mein Repo immer noch gleich groß. lokal ist das Repo geschrumpft. – isapir

Verwandte Themen