Gemeinsames Arbeiten und weitere Begrifflichkeiten
Eine weitere Vereinfachung, die Versionskontrollsysteme bei der Softwareentwicklung bieten ist der einfache Austausch von Code in einem Team. Dies geschieht in der Regel über einen Server, der den geteilten Stand des Projekts enthält der sogenannte Remote Server. Versionsverwaltungssysteme bieten eine Funktion, mithilfe der man einzelne Commits oder ganze Branches (Mengen von Commits) auf den Remote Server hoch laden kann. Den Prozess des Hochladens nennt man einen Push. Das Gegenstück dazu das Herunterladen von Code vom Remote Server nennt sich Pull.
*Um lokale und serverseitige Branches synchron zu halten, sollte man regelmäßig pushen und pullen.*
In der gemeinsamen Arbeit eines Teams sollte stets klar sein, welche Funktionen die Haupt-Branches haben und wie Arbeits-Branches zu benennen sind. Für die Erklärungen im Folgenden sei master der einzige Haupt-Branch und jeder Branch, dessen Name mit feature/ beginnt ein Arbeits-Branch:
Der Remote Server läuft meist in einem Dienst mit Weboberfläche, wobei GitHub.com, Bitbucket.org und GitLab.com die aktuell meist verbreiteten Dienste sind. GitLab hat außerdem eine Community Edition, die sich auf den eigenen Servern installieren lässt. In jedem dieser Dienste gibt es die Option Nutzer anzulegen und diesen einzeln Lese- und Schreib-Rechte in Projekten zu vergeben. Einzelne Branches lassen sich außerdem zusätzlich schützen, man nennt sie dann Protected Branch, wodurch man zusätzliche Rechte braucht, um dort Änderungen hinein zu pushen oder zu mergen.
Typischerweise werden die Haupt-Branches (also z.B. der master Branch) geschützt. Möchte nun ein Entwickler, der einen Arbeits-Branch fertig stellt (z.B. feature/integrate_analytics) diesen mit dem Gesamtfortschritt zusammenführen (Merge), so muss er einen anderen Entwickler mit entsprechenden Rechten darum bitten, dies für ihn zu tun. Dies geschieht mithilfe eines Merge Requests über die Weboberfläche des Remote Server Dienstes. Ein anderer Entwickler mit den entsprechenden Rechten hat so die Möglichkeit die gemachten Änderung in dem Arbeits-Branch zu validieren und eventuell Korrekturen vorzuschlagen oder diese selbst vorzunehmen, bevor er den Merge durchführt. Für die Kommunikation lassen sich Merge Requests oder einzelne Code-Stellen in der Weboberfläche kommentieren.
Wie kann ich Git einfach nutzen?
Obwohl Git ein Kommandozeilen-Tool ist und sogar eine stabile Git-Version auf einigen Systemen (z.B. Macs) bereits vorinstalliert ist, raten wir App-Entwicklern, die sonst wenig mit der Kommandozeile zu tun haben von dessen Einsatz ab. Stattdessen empfehlen wir die Nutzung eines guten Git-Programms mit Nutzeroberfläche:
*SourceTree erlaubt die Nutzung von Git ohne Kommandozeile.*
SourceTree ist sowohl für Mac als auch für Windows verfügbar und das Programm unserer Wahl. Es ist kostenlos, recht übersichtlich und unterstützt alle wichtigen Arbeitsschritte, die bei der täglichen Arbeit mit Git benötigt werden. Die Installation von Git macht SourceTree ebenfalls überflüssig, da eine aktuelle Git-Version bereits integriert ist. Im nächsten Artikel gehen wir im Detail auf die Arbeit mit Git in SourceTree ein.