2017-09-28 1 views
0

Wie alle von uns habe ich einige Schlüsselcode Commits, die meine Logik in der Befolgung der SOLID Paradigma, einen gut geschriebenen Algorithmus, etc .. Ich würde gerne Zeigen Sie dies in einem ähnlichen Interface (Seite-an-Seite) wie auf GitLab oder GitHub.Wie Schlüssel-Commits in Git im Idealfall ohne eine vollständige Repo

Gibt es eine Möglichkeit, dies zu tun (und nicht Screenshots), die nicht das gesamte Repository kopieren? Sicherheit ist in diesem Fall kein Problem, und der Kunde hat nichts dagegen einzuwenden, aber offensichtlich ist das Kopieren eines ganzen Repos keine gute Lösung.

- EDIT - Wie es der Fall sein kann, die GitHub die einzige oder beste Lösung ist, vielleicht eine bessere Frage oder Richtung könnte sein:

So master Zweig hat Commits/verschmilzt A durch Z. Meine Zusammenführungen waren J, M und X. Kann ich A bis I komprimieren, Zusammenführung von J> I anzeigen, K bis L komprimieren, Zusammenführung von M> L anzeigen usw.?

+0

Ist das Projekt bereits auf github/gitlab/etc gehostet? Könnte es sein? Dann stellen Sie einfach Links zu den entsprechenden Diff ... – larsks

+0

Es ist und kann sein. Aber ich habe mich nur gefragt, ob es einen anderen Weg gibt. Siehe meine Bearbeitung oben. –

+0

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

Antwort

2

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.

+0

Ich akzeptierte dies, weil es gründlich war und gab mir einen guten Weg, um fortzufahren. Vielen Dank. –