Webentwickler kommen an dem Versionsverwaltungssystem Git nicht vorbei. Ohne Git drohen Versionschaos und Probleme in der Zusammenarbeit von Entwicklerteams. Hier geht um die Vorzüge der Verwaltungssoftware und ihre wichtigsten Befehle. Sie können insbesondere Einsteigern in Git den Anfang erleichtern.
Was ist Git und was sind die Vorteile von Git
Git löst ein spezielles Problem in Entwicklerteams. Würden diese ohne die beliebte Verteilersoftware alle bei ihrer Arbeit an einem Projekt auf ein einziges zentrales Verzeichnis mit Code zugreifen, wäre die Arbeit im Team konfliktreich. Typische Schwierigkeiten würden sich ergeben, weil
- einzelne Versionen ungewollt überschrieben werden. - die Versionen nicht strukturiert und gemanagt werden. - Änderungen nicht nachvollziehbar sind. - die Zusammenarbeit im Team und möglicherweise von verschiedenen Arbeitsorten unmöglich ist. Git schafft als Versionsverwaltungssoftware Abhilfe für alle diese potenziellen Probleme in einem Entwicklerteam.
Wie arbeitet Git?
Git ermöglicht es jedem Entwickler, eine eigene Kopie des aktuellen Codes zu erstellen, seine Änderungen an der Kopie durchzuführen, und die Änderungen danach zurück in die Basis zu übertragen. So wird jeder Webentwickler recht unabhängig von den Kollegen und deren Arbeit. Git schafft die Basis dafür, dass die Änderungen am Code korrekt einfließen. Es kommt zwar noch mit Git zu Konflikten und Widersprüchen können aber aufgelöst werden. Am Ende ist eine Teamleistung bei der Entwicklung durch Beiträge einzelner Entwickler problemlos möglich. Dabei ist Git anders als manche typischen Versionsverwaltungssysteme. Das Programm:
- fußt auf nicht-linearer Entwicklung. Branching (Neue Entwicklungszweige) und Merging (Verschmelzen zweier oder mehrerer Zweige) sind feste Bestandteile der Git-Werkzeuge. Die Software enthält außerdem Programme, die eine einfache Visualisierung der History (Projekt-Geschichte) erlauben. Man kann an jede Stelle der Geschichte manövrieren. Die Branches werden in Git so implementiert, dass jede Verzweigung nur eine Reference ref darstellt. Die ref liegt im Repository im Verzeichnis .git/refs/heads und verweist auf einen Commit. Mit Eltern-Commits lässt sich jederzeit die gesamte Verzweigungsstruktur nachvollziehen. Der Projektleiter kann in jedem Augenblick Commits der Entwickler durch Merging oder Cheryy-Picking in den Master (Hauptzweig) des Projektes übernehmen. So fließt die gesamte Arbeit des Teams am Ende wieder in einer Struktur zusammen.
- arbeitet nicht mit einem zentralen Server. Jeder Nutzer kann auf eine lokale Kopie des gesamten Repositories und die History zugreifen. Mit Remote-tracking Branches wird der Stand eines anderen Repositories sichtbar.
- erlaubt den Datentransfer zwischen Repositorien. Dazu können unterschiedliche Netzwerkprotokolle genutzt werden. Git selbst nutzt zum Lesen den Port TCP-Port 9418, zum Schreiben gern SSH.
- liefert kryptographische Sicherheit durch Speicherung des Hash-Wertes eines Commits. Spätere Manipulationen der History werden so unmöglich
Der Einstieg in Git
Der Einstieg in die Versionsverwaltung gelingt in der Regel besser über das Terminal als über einen grafischen Git-Client. Anfänglich kann man sich nämlich sonst etwas verwirrt fühlen, weil der Überblick nicht gelingt. Werden die Befehle zumindest anfänglich über das Git-Terminal
Seite: 1 von 4 eingegeben, fällt die Einarbeitung leichter.
Wichtige Git-Befehle
Das Aufsetzen des Git-Projekts
Man navigiert im Terminal in das eigene Projekt respektive in das Verzeichnis, in dem das Projekt angelegt werden soll. Dort wird das neue Git-Repository aufgesetzt mit dem Befehl: git init
Auch das Kopieren in ein Repository ist möglich (lokal oder entfernt).
Befehle
Erstellung eines Klons auf der lokalen Ebene auf Pfad suzy git clone/pfad/lokales/repo/suzy/ziel
oder
Erstellung eines Klons auf der entfernten Ebene suzy1 git clone https://gitsuzy1.com/user/repository.git
Mit einem SSH-Key lässt sich SSH nutzen: Befehl: git clone user@server:/pfad.git
Remote Repositories sind nicht lokale Repositories. Das geklonte Repository ist origin, damit lässt sich weiter arbeiten mit folgenden Befehlen: Hier wird Repository von url mit Bezeichnung snob hinzugefügt: Befehl: git remote add snob url hiermit kann eine Liste aller bekanntgemachten Repositories erzeugt werden:
Befehl: git remote
Änderungen hochladen
Das lokale Repository beinhaltet nicht nur die eigenen Daten. Der Head merkt sich den letzten Commit und der Stage nimmt Dateien auf, die mit einem Add-Befehl vorgemerkt sind.
In den Stage geänderte Dateien hinzufügen:
git add datei - für einzelne Dateien git add * - für alle geänderten Dateien
Mit Dateien aus dem Stage ein Commit erstellen
git commit -m "nachricht" git commit -a -m "nachricht"
Herausnehmen aus dem Stage
git reset HEAD snob.txt
Den Commit in entferntes Repository schieben
git push remote branch
Vom origin auf den Master Branch schieben
git push origin master
Arbeit mit Branches
Erstellung eines neuen Branches mit dem Namen snob und Wechsel zu snob
git checkout -b snob
Löschung des Branches snob
git branch -d snob
Wechsel zu einem Branch suzy
git checkout suzy
Den Branch snob auf das Repository origin schieben:
git push origin snob
Das lokale Repository aktualisieren
git fetch origin
Änderungen mit dem Master zusammenführen
git merge origin/master
Das Ganze in einem:
git pull origin master
Fehler korrigieren und einen Korrektur Branch anlegen:
git checkout -b bugfix snob bugfix branch geht vom Zweig snob ab
Mögliche Konflikte über das Mergen lösen
Snob wird mit einem neuen Branch zusammengeführt:
git merge snob
Allgemeine Befehle
Anpassung von Nutzerinformationen
git config --global user.name "Willy Wollig" oder git config --global user.email willy@wollig.de
Fehler korrigieren über das Zurücksetzen git checkout -- dateiname git fetch origin git reset --hard origin/master
Den Status anschauen git status
Status in Listen-Form git status -s
Grafischer Verlauf gitk
Aktualisierung github Server git push
Aktualisierung der eigenen Arbeitsgrundlagen git pull
Für die Arbeit mit Git sind nicht sehr viele Befehle nötig. Man kommt mit den hier genannten recht weit. Auch diese relative Einfachheit ist ein großer Vorteil von Git.