2012-06-03 5 views
5

Ich habe für eine Weile an einem privaten Repo gearbeitet, und werde zu GitHub veröffentlichen.Git - Push zu neue Fernbedienung mit einem einzigen konsolidierten Commit

Das Problem ist, ich habe viele viele Commits, und aus hygienischen Gründen möchte ich nur ein Commit in GitHub erscheinen.

Wie schiebe ich, ohne Geschichte zu schieben? d. h. Konsolidierung des gesamten MASTER in einem einzigen Commit

Vielen Dank im Voraus.

Doug

Antwort

1

Schauen Sie in Git Rebase. Interaktiver Modus

5

Normalerweise würde man git rebase --interactive HEAD~n verwenden, wobei n die Nummer ist. von Commits, die Sie zu einem zusammenführen möchten. In Ihrem Fall möchten Sie jedoch den gesamten Verlauf in einen einzigen Commit zerlegen, und da ein Rebasing ohne einen Elternteil (bis zum anfänglichen Commit) nicht möglich ist, müssen wir git reset und git commit --amend verwenden.

Hier ist was Sie tun:

  1. git log --oneline. Finde die SHA deines anfänglichen Commits.
  2. Angenommen, unsere SHA ist fe7d5d1. Führen Sie git reset fe7d5d1 aus. Dadurch wird die Verzweigung auf das ursprüngliche Commit zurückgesetzt.
  3. Verwenden Sie jetzt git add ., um alle Änderungen zu übernehmen.
  4. Als nächstes ändern Sie Ihre ursprüngliche Festschreibung, git commit --amend -m "Initial commit".
  5. Bestätigen Sie, dass Sie jetzt nur einen einzigen Commit mit git log --oneline haben.

ACHTUNG: Nie umschreiben/Squash/rebase Sie haben zu einem Remote-Repo bereits geschoben verpflichtet.

+1

was ist, wenn ich die gesamte Geschichte zu einem privaten Repo bei bitbucket geschoben habe, aber nur den aktuellen Zustand (dh rebased) auf github schieben möchte? – Doug

+1

Die Idee ist nie Geschichte neu zu schreiben, die bereits an andere weitergegeben hat. In Ihrem Fall, wenn Sie nur Zugriff auf das private Repo haben, ist es sicher, Rebase. –

+0

Ich kann nicht einfach Geschichte für das GitHub Repo umschreiben und Geschichte für BitBucket behalten? alle meine aktuellen Änderungen als einen einzigen Commit "committen"? – Doug

Verwandte Themen