2012-12-05 24 views
160

Ich möchte alle Commit-Verlauf löschen, aber den Code im aktuellen Zustand halten.Wie lösche ich den gesamten Commit-Verlauf in GitHub?

weil in meinem Commit-Verlauf zu viele ungenutzte Commit sind.

Wie kann ich es tun?

Gibt es irgendeinen Git-Befehl kann dies tun?

git filter-branch ? 
git rebase ? 
... 

mein Code-Host in github.com.

Antwort

529

Das Löschen des Ordners .git kann zu Problemen in Ihrem Git-Repository führen. Wenn Sie alle Ihre Geschichte verpflichten löschen möchten, aber den Code in seinem aktuellen Zustand zu halten, ist es sehr sicher, es zu tun, wie im folgenden:

  1. Kasse

    git checkout --orphan latest_branch

  2. Alle hinzufügen die Dateien

    git add -A

  3. die Änderungen Commit

    git commit -am "commit message"

  4. löschen Zweig

    git branch -D master

  5. der aktuelle Zweig umbenennen

    git branch -m master

  6. schließlich zu meistern, aktualisieren Kraft Repository

    git push -f origin master

PS: das wird nicht halten Sie Ihre alte Geschichte begehen um

+0

Kann ich danach Anforderungen mit einem gegabelten Repository abrufen? – rraallvv

+5

Ehrfürchtig in der Tat. :) 0. Klon: 'git Klon https: // github.com/blahblah/blahblah' :) – pidosaurus

+1

@rraallvv Nein, du kannst nicht, es wird sagen: * Nichts zu vergleichen, Master und X-Zweig hat eine völlig andere Commit-Geschichte. * Pull-Anfrage auf Github wird automatisch geschlossen, wenn Sie Push drücken – NoNameProvided

63

Wenn Sie sicher sind, dass Sie den gesamten Commitverlauf löschen möchten, löschen Sie einfach das Verzeichnis .git in Ihrem Projektstammverzeichnis (beachten Sie, dass es ausgeblendet ist). Dann ein neues Repository im selben Ordner initialisieren und es in das Repository GitHub verlinken:

git init 
git remote add origin [email protected]:user/repo 

jetzt die aktuelle Version von Code verpflichten

git add * 
git commit -am 'message' 

und schließlich das Update auf GitHub erzwingen:

git push -f origin master 

Ich schlage jedoch vor, die Geschichte (der Ordner .git im Repository) zu sichern, bevor Sie diese Schritte ausführen!

+1

aber wenn ich möchte nur spätestens 10 halten begehen? – Chinaxing

+0

Kann ich danach Requests mit einem gegabelten Repository ziehen? – rraallvv

+1

das funktioniert, aber es wird die Geschichte von früheren Commits auf dem Baum wie @Desta Haileselassie Hagos sagte –

Verwandte Themen