Versionskontrolle einzelner Dateien mit GitHub Gist

Published on August 11, 2018

Versionskontrolle einzelner Dateien mit GitHub Gist

Bild

Es kommt häufig vor, dass ein Entwickler mit der Zeit eine Sammlung von Code sammelt, den er in seinen Projekten verwendet.

Er verwendet einige Skripte in einigen Projekten, andere in anderen.

Diese Skripts werden im Laufe der Zeit verbessert, Fehler werden entfernt, optimiert. Daher stellt sich die Frage, wie neue Versionen von Skripts mit denen in Projekten synchronisiert werden sollen .

Es gibt mehrere Optionen:

Erste Option:

Erstellen Sie ein Repository und legen Sie alle Skripts dort ab. Dann wird dieses Repository als Submodul mit dem Projekt verbunden und verwendet.

Nachteile:

  1. Alle Skripts einschließlich unnötiger Skripts werden in das Projekt kopiert.
  2. Das Submodul ist nicht an das Projekt-Repository gebunden. Wenn das Remote-Repository des Submoduls nicht verfügbar ist, können wir das gesamte Projekt nicht deflieren.

Zweite Option:

Speichern Sie jedes Skript separat auf Github gist und verbinden Sie die als Submodule benötigten
Minus mit der ersten Option im zweiten Absatz.

Die dritte Option:

Verwenden Sie Git Subtree.

(Diese Lösung ist eine Alternative zu Git-Submodulen)

Git-Teilbaum ist eine andere Methode zum Zusammenführen von Zweigen. Seine Idee ist, dass git mit zwei Zweigen versteht, dass ein Zweig keine Variation des anderen ist, sondern eine Ergänzung.

Das allgemeine Wesen der Idee:

  1. - füge die Datei zu Github gist hinzu (ein Mini-Repository wird generiert)
  2. - Wir binden ein Mini-Repository als separate Niederlassung an unser Projekt
  3. - Ordnen Sie diesem Zweig einen Ordner zu
  4. - abgepumpt
  5. - weiter arbeiten wir wie mit einem normalen Zweig (Zusammenführen, Festschreiben, Abrufen ...)

Nun zu Einzelheiten mit Git-Erweiterungen.

1) Wir veröffentlichen unsere Codedatei unter https://gist.github.com, wo wir sofort einen Link zum "Mini"

Bild

-Repository erhalten können : Öffnen Sie das Repository unseres Projekts in GitExtensions und wählen Sie:

[Repository] -> [Remote Repositories ...].

Bild

Wir verbinden uns als separate Filiale.

Drücken Sie dazu [+] . Geben Sie [Name] , [Url] ein und speichern Sie [Änderungen speichern] :

$git remote add "Util1" "https://gist.github.com/cf056e792d3bd9c2fc5973b846efe3d3.git"

Bild

Wir sehen das mit einem Remote-Repository verbunden.

Als Nächstes müssen wir diesen Thread mit einem bestimmten Ordner in unserem Projekt verknüpfen, damit die Datei dorthin kopiert wird.

Öffnen Sie dazu Git-bash (Strg + G) und führen Sie den Befehl aus:

$git read-tree --prefix=Client/Assets/ -u Util1/master

Dabei gilt Folgendes :

Client / Assets / ist der Pfad zu dem Ordner, in den die Datei "
Util1 / master" kopiert werden soll - der Name des Remote-Repository-Zweigs
(über die Benutzeroberfläche konnte den Weg nicht finden). Der

Hauptzweig wird an unseren Ordner im Projekt angehängt. Und die Datei ist schon da.

Jetzt können wir wie mit einem normalen Zweig arbeiten.

Zum Beispiel, wenn eine Datei zu Gist geändert wird, können wir die neue Version erhalten:

Make All Fetch , und alle Änderungen sehen:

$git fetch --progress "--all"

Dann führen wir zusammen, um die Änderungen in unseren Thread hochzuladen:

$git merge -s subtree --no-ff --allow-unrelated-histories Util1/master

Bild

Bild

Ergebnis:

Bild

Zusätzliche Informationen:

https://git-scm.com/book/ru/v1/Instruments-Git-Deliting-
subtrees https://www.atlassian.com/blog/git/alternatives-to-git-submodul- git-subtree
https://www.nwcadence.com/blog/git-subtrees