
Es kommt häufig vor, dass ein Entwickler im Laufe der Zeit eine Sammlung von Code ansammelt, die er in seinen Projekten verwendet.
Er verwendet einige Skripte in einigen Projekten, andere in anderen.
Diese Skripte werden im Laufe der Zeit verbessert, Fehler werden entfernt und optimiert. Daher stellt sich die Frage,
wie neue Versionen von Skripten mit denen in Projekten synchronisiert werden können .
Es gibt mehrere Möglichkeiten:
Die erste Option:Erstellen Sie ein Repository und legen Sie alle Skripte dort ab. Dann wird dieses Repository als Submodul mit dem Projekt verbunden und verwendet.
Nachteile:
- Alle Skripte, auch unnötige, werden in das Projekt kopiert.
- Das Submodul ist nicht an das Projekt-Repository gebunden. Wenn das Remote-Repository des Submoduls nicht verfügbar ist, können wir nicht das gesamte Projekt herunterladen.
Die zweite Option:Jedes Skript sollte separat auf Github gist gespeichert und nach Bedarf als Submodule verbunden werden
Das Minus ist das gleiche wie in der ersten Version im zweiten Absatz.
Die dritte Option:Verwenden Sie
Git Subtree.(Diese Lösung ist eine Alternative für Git-Submodule.)
Der Git-Teilbaum ist eine weitere Methode zum Zusammenführen von Zweigen. Seine Idee ist, dass Git mit zwei Zweigen verstehen wird, dass ein Zweig keine Variation des anderen ist, sondern eine Ergänzung.
Allgemeine Idee:
- - füge die Datei zu Github gist hinzu (ein Mini-Repository wird generiert)
- - Binden Sie das Mini-Repository als separaten Zweig an unser Projekt
- - Ordnen Sie diesem Zweig einen Ordner zu
- - entleeren.
- - dann arbeiten wir wie mit einem regulären Zweig (Merge, Commit, Fetch ...)
Jetzt Details mit Git-Erweiterungen.
1) Wir veröffentlichen unsere Datei mit dem Code unter
https://gist.github.com, wo wir sofort einen Link zum "Mini" -Repository erhalten können:

Öffnen Sie das Repository unseres Projekts in GitExtensions und wählen Sie:
[Repository] -> [Remote-Repositorys ...]
Wir verbinden uns als separate Niederlassung.
Drücken Sie dazu
[+] . Geben Sie
[Name] ,
[URL] ein und speichern Sie
[Änderungen speichern] :
$git remote add "Util1" "https://gist.github.com/cf056e792d3bd9c2fc5973b846efe3d3.git"

Wir sehen, dass wir mit dem Remote-Repository verbunden sind.
Als nächstes müssen wir diesen Zweig einem bestimmten Ordner in unserem Projekt zuordnen, damit die Datei dort kopiert wird.
Öffnen Sie dazu Git-bash (Strg + G) und führen Sie den folgenden Befehl aus:
$git read-tree --prefix=Client/Assets/ -u Util1/master
wo:
Client / Assets / - Pfad zu dem Ordner, in den die Datei kopiert wird
Util1 / master - Der Name des Remote-Repository-Zweigs
(Ich habe keinen Weg durch die Benutzeroberfläche gefunden)
Der Hauptzweig wird an unseren Ordner im Projekt angehängt. Und die Datei ist schon da.
Jetzt können wir wie mit einer regulären Niederlassung arbeiten.Wenn sich beispielsweise eine Datei in Gist ändert, können wir eine neue Version erhalten:
Wir
holen alle und sehen alle Änderungen:
$git fetch --progress "--all"
Dann führen wir zusammen, um die Änderungen in unserer Branche zu füllen:
$git merge -s subtree --no-ff --allow-unrelated-histories Util1/master

Ergebnis:
Weitere Informationen:https://git-scm.com/book/en/v1/Tools-Git-Merging-treeshttps://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtreehttps://www.nwcadence.com/blog/git-subtrees