Ich habe eine Reihe von Commits in meinem lokalen Repository, die thematisch ähnlich sind. Ich möchte sie zu einem einzigen Commit zusammenfassen, bevor ich sie in ein entferntes Repository hochlade. Wie kann ich das tun? Ich denke rebase
tut dies, aber ich kann mir keinen Reim auf die Unterlagen machen.
Antworten
Zu viele Anzeigen?Sie können Commits mit einer Interaktive Neuauflage . Es gibt ein sehr schönes YouTube-Video, das zeigt, wie man dies auf der Kommandozeile oder mit SmartGit :
Wenn Sie bereits SmartGit-Benutzer sind, können Sie alle Ihre ausgehenden Übertragungen auswählen (indem Sie die Strg-Taste gedrückt halten) und das Kontextmenü (Rechtsklick) öffnen, um Ihre Übertragungen zu zerdrücken.
Es ist sehr bequem:
Es gibt auch ein sehr schönes Tutorial von Atlassian die zeigt, wie es funktioniert:
Und meine Art der squashing
mehrere push
ist (vielleicht haben Sie viele Commits in Ihren eigenen Zweig gepusht und möchten nun eine Pull-Anfrage stellen, ohne sie mit vielen Commits zu überladen, die Sie bereits gepusht haben). Die Art und Weise, wie ich das mache (es gibt keine andere einfachere Option, soweit ich das beurteilen kann).
- Erstellen Sie einen neuen Zweig zum Zweck der
squash
(Zweig des ursprünglichen Zweigs, zu dem Sie die Anfrage ziehen möchten). - Verschieben Sie den neu erstellten Zweig.
- Merge-Zweig mit bereits gepushten Commits zum neuen Zweig.
- Neue Verzweigung und Squash neu verankern.
- Neuen Zweig verschieben.
- Erstellen Sie eine neue Pull-Anfrage für den neuen Zweig, der jetzt einen einzigen Commit hat.
Ejemplo:
git checkout from_branch_you_wish_to_pull_request_to
git checkout -b new_branch_will_have_single_squashed_commit
git push -u new_branch_will_have_single_squashed_commit
git merge older_branch_with_all_those_multiple_commits
git rebase -i (here you squash)
git push origin new_branch_will_have_single_squashed_commit
Sie können jetzt die Anfrage in from_branch_you_wish_to_pull_request_to
Sie möchten wahrscheinlich Interaktives Rebasing die unter diesem Link ausführlich beschrieben wird.
Sie können weitere gute Ressourcen finden, wenn Sie nach "git rebase interactive" suchen.
- See previous answers
- Weitere Antworten anzeigen