2010-01-14 5 views
5

Ich arbeite an einem Repository ich gegabelt in denen der Autor den schmutzigen Pfad und stopfte alle seine Abhängigkeiten in die Lib/Verzeichnis in der ursprünglichen Commit. Normalerweise, wenn es nicht das anfängliche Commit war, würde ich nur eine interaktive Rebase machen und das gesamte Commit löschen (wenn das alles ist, was er getan hat). Ich habe jedoch keine Ahnung, wie ich das initiale Commit bearbeiten/löschen würde. Gibt es eine Möglichkeit, das initiale Commit zu bearbeiten und das lib-Verzeichnis zu entfernen, ohne den Rest davon zu berühren?Wie bearbeite ich das initiale Commit in einem Github-Repository?

EDIT

stolperte ich zufällig auf die Antwort hier: Can I remove the initial commit from a Git repo? in der Antwort an. Das ist es, was ich bekomme, wenn ich nicht gründlicher suche.

Antwort

4
$ git filter-branch --parent-filter \ 
    'test $GIT_COMMIT = SECOND && echo "" || cat' \ 
    --tag-name-filter cat -- --all 

wo SECOND ist der SHA-1 von der Commit Sie die neue Wurzel sein wollen.

Das obige geht davon aus, dass alle Zweige die gleichen ersten und zweiten Commits verwenden. Wenn nicht, müssen Sie den Test im übergeordneten Filter verallgemeinern.

Beachten Sie, dass dies eine drastische Maßnahme ist: Es wird Ihre gesamte Geschichte umschreiben und Sie davon abhalten, dem Repo des Autors zu folgen. Auch wenn Sie Ihren Repo zu Fernbedienungen geschoben haben, müssen Sie diese mit git push -f überlisten.

+0

ACHTUNG: Ref 'refs/heads/master' ist unverändert ACHTUNG: Ref 'refs/remotes/origin/master' unverändert ist ACHTUNG: Ref 'refs/remotes/origin/master' unverändert ist ist, was es gab mich. – Rayne

+0

Ack! Sie wollen die Eltern des * zweiten * Commits umschreiben, nicht die ersten. Siehe aktualisierte Antwort und Entschuldigung für den Fehlstart. –

+0

Ich habe einen anderen Weg gefunden, dies zu tun (in meiner Bearbeitung gezeigt), bevor Sie diesen Beitrag bearbeitet haben. Ich gehe davon aus, dass das tatsächlich funktioniert (ich vertraue dir total <3) und markiere deine Antwort trotzdem als akzeptiert. – Rayne

Verwandte Themen