Ein lokales Repo auf einen Server Pushen

Wenn man (wie wir) zunächst ein lokales Repo angelegt hat, möchte man das möglicherweise auf einem zentralen Server wie codeberg, github oder gitea.schule.social vorhalten, um das Repo gemeinsam zu bearbeiten, oder auf verschiedene Rechner klonen zu können.

Um dieses Ziel zu erreichen geht man wie folgt vor:

Man erzeugt auf dem Server ein Repo, in welches das lokale Repository gepusht werden soll

Man setzt händisch den Origin des lokalen Repos auf die Adresse des auf dem Server erzeugten Repos

Nun kann man das lokale Repo zum „neuen Origin“ pushen.

Von nun an arbeitet man im lokalen Klon weiter, indem man regelmäßig pullt und pusht.

Am Beispiel Gitea

Anmelden bei Gitea. Repository erstellen:

Im 3. Schritt wird die Anleitung für das weitere Vorgehen direkt angezeigt:

Für uns trifft der zweite Fall zu - wir wollen ein bestehendes Repo pushen, führen die angegebenen Befehle also in unserem lokalen Repo aus:

Die Fehlermeldung error: Src-Refspec master entspricht keiner Referenz. rührt daher, dass versucht wurde, den lokalen master-Branch zum Origin zu pushen, der lokale Branch heißt aber main, an dieser Stelle muss man also gegebenenfalls eingreifen.

Das Ergebnis auf dem Server sieht nun folgendermaßen aus:

Mit dem Befehl git clone https://gitea.schule.social/sbel/webseite.git kann nun jeder dieses Repo klonen und bearbeiten. Änderung auf den Server zu pushen ist allerdings erst nach Authentifizierung möglich. Allerdings könnte man im Klon den Origin erneut ändern (z.B. zu einem GitHub Repo) und seine Änderungen dann dorthin pushen. In diesem Fall hat man einen Fork erzeugt.

Wichtig: Kein Fork vergisst seine Geschichte - da alle Commits durch eindeutige Hashes bezeichnet werden und alle Klone immer alle Commits enthalten können Repos über lange Zeit über verschiedene Server und Rechner geforkt und bearbeitet werden, und es ist (bei ausreichend systematischer Arbeitsweise der Autoren) jederzeit möglich, sie zu einem späteren Zeitpunkt wieder zusammenzuführen.