Wenn Sie bereit sind, ein neues Repository für diesen Zweck einzurichten, können Sie tun, was Sie wollen. Angenommen, Sie haben ein Repository mit 10 Commits haben:
$ git log --oneline
2c82196 this is commit 10
2bff8eb this is commit 9
7020be2 this is commit 8
0aea964 this is commit 7
c5d5fcb this is commit 6
c80dc97 this is commit 5
591367e this is commit 4
c2524c8 this is commit 3
3aa5e3a this is commit 2
33da02c this is commit 1
Sie möchten Ihre Änderungen markieren in begehen 5. Nur ein interaktives Fütterungsmaterial auf der gesamten Geschichte laufen:
Diese Sie einen Pick bekommen Liste, die so etwas wie folgt aussieht: für 2-4 verpflichtet
pick 2d6696b this is commit 1
pick c5c7389 this is commit 2
pick c8cd62d this is commit 3
pick da0fb52 this is commit 4
pick 6ec5fac this is commit 5
pick 7508d6f this is commit 6
pick 6dede0f this is commit 7
pick 9e995b7 this is commit 8
pick 8b1299a this is commit 9
pick 44a32ee this is commit 10
ändern pick
zu squash
:
pick 2d6696b this is commit 1
squash c5c7389 this is commit 2
squash c8cd62d this is commit 3
squash da0fb52 this is commit 4
pick 6ec5fac this is commit 5
pick 7508d6f this is commit 6
pick 6dede0f this is commit 7
pick 9e995b7 this is commit 8
pick 8b1299a this is commit 9
pick 44a32ee this is commit 10
... und speichern Sie die Datei. Dies wird Squash begeht 2, 3 und 4 in einer begehen, Sie mit der folgenden Geschichte verlassen:
$ git log --oneline
9cec0a1 this is commit 10
b39ec3d this is commit 9
3578beb this is commit 8
1ce80b9 this is commit 7
2faaf79 this is commit 6
ff57ad9 this is commit 5
6a53018 this is commit 1
Jetzt begehen 5 hat nur einen einzigen Elternteil. Sie könnten dasselbe für nachfolgende Commits tun. laufen wieder:
Und dann bearbeiten Sie Ihre Auswahlliste alle nachfolgenden Commits Squash in begehen 6:
pick 6a53018 this is commit 1
pick ff57ad9 this is commit 5
pick 2faaf79 this is commit 6
squash 1ce80b9 this is commit 7
squash 3578beb this is commit 8
squash b39ec3d this is commit 9
squash 9cec0a1 this is commit 10
Diese bekommt man:
$ git log --oneline
a7a03ba this is commit 6
01253c9 this is commit 5
a903311 this is commit 1
Man könnte natürlich auch einfach git reset
verwendet haben Verwerfen des gesamten Verlaufs nach dem Festschreiben 5.
Ist das Projekt bereits auf github/gitlab/etc gehostet? Könnte es sein? Dann stellen Sie einfach Links zu den entsprechenden Diff ... – larsks
Es ist und kann sein. Aber ich habe mich nur gefragt, ob es einen anderen Weg gibt. Siehe meine Bearbeitung oben. –
Ich weiß nicht, was Sie mit "A bis I komprimieren" meinen. Wenn Sie den Unterschied zwischen J> I anzeigen wollen, interessiert Sie nur der Unterschied zwischen diesen Commits, die Sie erhalten, wenn Sie mit I verknüpfen. A-H sind nicht relevant. Z. B. um eine Funktion anzuzeigen, die ich zu einem Projekt hinzugefügt habe, könnte ich direkt zu [dem Commit] (https://github.com/git/git/commit/f6f2a9e42d14e61429af418d8038aa67049b3821) verlinken. – larsks