Lange Zeit war für mich Git ein Mysterium. In den letzten Monaten habe ich mich jedoch mehr damit beschäftigt und meine nun, die Basics verstanden zu haben ;) Ich hätte mir als Anfänger eine kleine Anleitung gewünscht, die mir einfach erklärt, wie ich meinen Code auf GitHub veröffentliche. Deshalb habe ich mir gedacht, ich fasse hier einfach mal kurz zusammen, wie man ohne Vorwissen zu Git seinen Code zu GitHub überträgt und ein neues Repository anlegt.
Update: Ich habe eine neue, umfassendere Einleitung zu Git verfasst: Die wichtigsten Git-Kommandos für Einsteiger
Reposiory auf GitHub anlegen
Auf GitHub muss zur Veröffentlichung von Code selbstverständlich ein neuer Account angelegt werden. Nach der Registrierung kann auch schon losgelegt werden: Oben rechts neben dem Namen des gerade eingeloggten Benutzers befindet sich ein Plus-Symbol. Legt über den Menüpunkt „New Repository“ ein neues Repo an. Vergebt einen Namen und eine kurze Beschreibung für euer Repository und legt die Lizenz fest, unter der ihr euren Code veröffentlichen wollt. Neben „Initialize this repository with a README“ könnt ihr einen Haken setzen. Dadurch neben einer Lizenz-Datei auch eine README Datei generiert, in der ihr später wichtige Informationen zur Benutzung eurer Software festhalten könnt. Die README Datei wird auf GitHub direkt angezeigt, sodass ein Besucher sich schnell Informationen zum Repository einholen kann. Mit einem Klick auf „Create repository“ wird das Repo erstellt und ihr werdet auf die Hauptseite des Repositorys weitergeleitet.
Dort könnt ihr auf der rechten Seite unter „Settings“ noch einige Einstellungen vornehmen, z.B. dass nur Mitglieder einer bestimmten Gruppe „committen“ können (also Schreibzugriff auf das Repo haben).
Lokales Code-Verzeichnis Git-fähig machen
Auf eurem Rechner öffnet ihr nun ein Terminal und navigiert in euer Code Quellverzeichnis. Falls ihr Git noch nicht installiert habt, solltet ihr das an dieser Stelle nachholen. Pakete dafür gibt es für jede Linux-Distribution. Das Quellverzeichnis wird mit folgendem Kommando „Git-fähig“ gemacht:
git init
Als nächstes wird das lokale Repository mit dem Remote-Repository auf GitHub verbunden, sodass zwischen den beiden Repos ein Austausch stattfinden kann. Dabei bekommt das Repo auf den GitHub-Servern den Namen „origin“. Die Adresse, die am Ende des Kommandos steht, ist die SSH-Adresse zum GitHub Repo. Diese kann in GitHub in der rechten Spalte entnommen werden (Vorher Klick auf „SSH“!).
git remote add origin git@github.com:ThomasLeister/tl-test.git
Repos abgleichen
Als nächstes müssen die beiden Repos abgeglichen / synchronisiert werden. Während auf GitHub bisher nur die beiden Dateien „LICENSE“ und „README“ zu sehen sind, befindet sich der Code des Projekts noch im lokalen Repository auf dem Rechner. Im ersten Schritt werden die Dateien „LICENSE“ und „README“ in das lokale Repo kopiert, damit sie auch dort verfügbar sind und ggf. geändert werden können. Die Änderungen des Master-Branches im Origin-Repo auf den Rechner „ziehen“:
git pull origin master
Das „master“ bedeutet, dass in diesem Fall der Inhalt des Master-Branches (Hauptzweigs) in das lokale Repo kopiert wird. Es können neben dem Master-Branch noch weitere Zweige anlelegt werden, aber darauf will ich nicht näher eingehen. Für den Anfang genügt es, einen einfachen Master-Branch zu haben.
Wenn ihr jetzt nochmal in euer Quellcode-Verzeichnis seht, werdet ihr die beiden neuen Dateien entdecken. Das lokale Verzeichnis ist jetzt also vollständig. Fehlt noch das Remote-Repository „Origin“ auf GitHub, das noch ziemlich leer ist. Der Projektcode wird jetzt auf die GitHub Server hochgeladen. Dazu muss zuerst festgelegt werden, welche Dateien für die Übertragung überhaupt infrage kommen sollen. Da der komplette Code hochgeladen werden soll (also alle Dateien „commitet“ werden sollen), wird dieser Befehl genutzt:
git add .
Falls nur einzelne Dateien für einen Commit beachtet werden sollen, können sie mit
git add datei.txt
einzeln hinzugefügt werden. Die über dieses Kommando hinzugefügten Dateien befinden sich nun im sog. „Stash“ und sind bereit für einen Commit. Alle anderen Dateien werden bei einem Commit nicht übertragen. Sobald alle gewünschten Dateien in Stash sind, kann ein neuer Commit erstellt werden:
git commit -m "Nachricht"
„Nachricht“ wird hierbei durch eine kurze Beschreibung ersetzt, was der Commit geändert hat. Z.B. „Fehlerbehebung bei Login“. Auf diese Weise bleibt nachvollziehbar, wozu der Commit überhaupt gut war und was sich am Code geändert hat.
Nachdem der Commit erstellt wurde, kann das Remote-Repo auf GitHub aktualisiert werden. Beim ersten Hochladen („push“) muss angegeben werden, welcher denn der Standard-Branch sein soll für Pushes. In unserem Fall soll das wieder der Master-Branch im „origin“-Repo sein:
git push --set-upstream origin master
Jeder weitere Push kann ohne eine Branch-Angabe ausgeführt werden:
git push
Jetzt ist auch das GitHub Repo aktuell und alle Quelldateien sollten über die GitHub Seite verfügbar sein.
Informationen zum Repo-Status einholen
Wenn ihr genau wissen wollt, in welchem Status sich euer lokales Repository befindet und welche Dateien sich beispielsweise schon im Stash befinden, könnt ihr folgenden Befehl nutzen:
git status
Weitere Vorgehensweise
Wenn du deinen Code lokal geändert hast und die Aktualisierungen auf den GitHub Server hochladen willst, gehst du so vor:
git add . git commit -m "Nachricht" git push
… und das war’s auch schon ;)
Falls du nicht alleine an einem Projekt arbeitest, sondern mehrere Personen zu dem Projekt beitragen, wird der Code im GitHub Repo schnell aktueller sein als dein lokales Repository. Aus diesem Grund sollte man das lokale Repo auf den neuesten Stand bringen, bevor man mit den eigenen Änderungen beginnt. Schließlich will man ja nicht mit alten Dateiversionen arbeiten:
git pull
Ich hoffe, diese Kurzanleitung für Einsteiger ist verständlich. Wenn nicht: Sagt einfach in den Kommentaren Bescheid, dann werde ich nachbessern.
http://maltris.org
>Lange Zeit war für mich Git ein Mysterium
Das kenne ich. :D
Danke für diese Zusammenfassung. Wäre es evtl. möglich, Deine gesamten Erfahrungen zu veröffentlichen? Ich denke, eine vollständige Einführung, mit Anlegen des Kontos samt Schlüssel, und was man alles sonst so benötigen und berücksichtigen muss ist für viele hilfreich.
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Hi,
ja, wenn ich mal etwas mehr Zeit habe, kann ich eine ausführlichere Anleitung veröffentlichen.
LG Thomas
Hi,
sieht ja toll aus. Super gemacht.
Wäre es möglich diese Anleitung kurzfristig auch für Windows-Systeme einzustellen. (Bitte nicht gleich einen Shitstorm hier über mich, aber Windows ist nun mal das meist genutzte System auf der Welt – egal wie gut oder schleecht es sein mag…)
LG
Torsten
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Hi,
da ich kein Windows System habe, kann ich das unter Windows nicht nachvollziehen. Aber ich vermute, die Kommandos sind in etwa dieselben – wenn nicht sogar identisch.
LG Thomas
Hallo,
vielen Dank für die Anleitung. Ich hatte Probleme mit dem SSH-Key. Bei dem Befehl „git pull origin master“ wurde immer
Permission denied (publickey).
fatal: Could not read from remote repository.
ausgegeben. Vlt kannst Du noch kurz ergänzen, dass die Verbindung mittels SSH ausgebaut wird und die Anmeldung über ein Schlüsselpaar erfolgt. Hierfür muss der eigene publickey erzeugt und auf github kopiert werden.
Keypair erzeugen: ssh-keygen -t rsa
SSH-Agent starten: ssh-agent csh
Keypair hinzufügen: ssh-add
Public-Key anzeigen lassen: cat ~/.ssh/id_rsa.pub
Diesen Key via Browser auf github laden -> Profil (oben links) ->Settings -> SSH keys -> Add SSH key :
SSH-Verbindung zu github testen: ssh -vT git@github.com
Deine Anleitung hat mit sehr viel Zeit gespart vielen Dank.
Snowyrain
Eine tolle Anleitung, die man fast eins zu eins auch für Windows und Visual Studio Team Services verwenden kann. Vielen Dank!