Wie rebase alle commits, die von Anfang an
So, ich bin der Migration von svn (code.google.com) zu git(github).
Habe ich importiert mein Projekt aus dem svn-repo, und es importiert alle die commit-Historie Weg.
Ich bin nicht wirklich stolz auf solche Kommentare, wie es war eines meiner ersten Projekt nicht wirklich ernst.
Möchte ich Stellungswechsel alles in einem einzigen "initial import" zu Begehen.
Habe ich alles gezogen auf meinem computer und ich bin versucht zu tun. Aber alles was ich fand, war:
git rebase -i master
aber nur rebases neue änderungen und commits.
Wie reinige ich meine github-repository von der ganzen Geschichte mit einem Stellungswechsel?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man rebase-und squash-alles, wenn Sie wollten (außer dem ersten commit), aber warum die Mühe? Einfach löschen Ihre .git-Verzeichnis, führen Sie
git init
neu zu erstellen,git add
alles, undgit commit
um eine neue initial commit..git
beseitigt auch Ihre Haken und andere Konfiguration, wenn Sie eine haben.git rebase -i --root
startet ein interaktives rebase der alle verpflichtet, von Anfang an.Von dort aus können Sie squash, die alle übertragungen in eine und/oder andere Bearbeitungen.
Jefromi Antwort wird funktionieren, aber wenn Sie möchten, um Ihre bestehenden repo-Konfiguration, oder sogar verlassen, um den commit-nur für den Fall, können Sie das folgende tun:
git checkout master
git branch backup
Optional lassen eine andere Filiale hier in Fall, dass Sie wollen, um Ihre Geschichte.git reset --soft $SHA_OF_INIT_COMMIT
aktualisieren, was den KOPF auf, aber lassen Sie Ihre index-und Arbeitsverzeichnis in Ihrem aktuellen Zustand. Sie können das SHA mitgit log --pretty=format:%h --reverse | head -n 1
, und machen einen Schritt mitgit reset --soft $(git log --pretty=format:%h --reverse | head -n 1)
git commit --amend
ändern Sie Ihr initial commit zeigen den aktuellen Zustand Ihrer repo.git rev-list --max-parents=0 HEAD
- aber ich mag immer noch deine Antwort als die beste. 🙂 Die Logik, die ist: 1) Bewegen Sie den master zu Punkt 1. Begehung, 2) änderung, commit zu halten, was in meinem Arbeitsverzeichnis nun rechts, 3) voila! neue initial commit alle änderungen gequetscht, ordentlich zusammen 🙂Finden den hash des Commits, das Sie starten möchten, die quetschen aus sagen
abcd12
und dann Stellungswechsel vor, die hash-spezifisch.Sind Sie mit
master
zum Stellungswechsel vor, die die rebase durchführt, die gegen die Spitze des master-Zweig.Wenn Sie möchten, reduzieren Sie alle Ihre Geschichte zu einem einzigen "Initial import" zu Begehen, entfernen Sie einfach
.git
Verzeichnis und erstellen Sie ein neues lokales repository (halten eine Sicherungskopie der alte).git init . && git add . && git commit -m "Initial import"
.Solche neuen repository wird nicht haben einen gemeinsamen Vorfahren mit, die Sie gebracht haben auf GitHub, so müssen Sie
git push --force
Ihre neu erstellte repository.