Git in Java-Seminaren – Teil 1: Kurzeinführung in Git

In dieser Reihe möchte ich das Versionsverwaltungssystem Git vorstellen, das auch für Java-Seminare der Integrata benutzt wird, um den Teilnehmern eine komfortable Arbeitsumgebung zu definieren. Weiterhin werden die Musterbeispiele für verschiedene Seminare über öffentliche Git-Server bereitgestellt.

Dieser erste Teil liefert eine Kurzeinführung in das elementare Arbeiten mit Git.

Teil 2 stellt das Eclipse-PlugIn für Git vor, da Eclipse die Standard-Entwicklungsumgebung bei der Integrata ist.

Teil 3 schließlich zeigt, wie Git in Java-Seminaren benutzt werden kann.

Eine Kurzeinführung in Git

Ein Versionsverwaltungssystem ermöglicht es, verschiedene Stände eines Dateibestands eindeutig und reproduzierbar abzulegen. Solche Systeme sind innerhalb eines Software-Projekts unverzichtbar, um Quellcodes und  Konfigurationsdateien abzulegen. Git ist ein so genanntes Verteiltes Source Code Management System. Das bedeutet, dass auch ohne Server-Anbindung auf jedem Rechner mit Git-Installation ein vollständiges Versionsverwaltungssystem, ein so genanntes Git-Repository, zur Verfügung steht. Ein Repository besteht aus einer internen Dateiablage (das Verzeichnis .git), das enthaltende Verzeichnis ist der Arbeitsbereich des Git-Projekts.

„Vollständig“ bedeutet, dass der Anwender unter anderem die folgenden Befehle benutzen kann, die typisch für das Arbeiten mit einem Versionsverwaltungssystem sind:

  • commit
    • Mehrere Änderungen an einem Bestand werden mit einer Beschreibung versehen und im Versionsverwaltungssystem abgelegt. Dabei schreitet der aktive Branch mit jedem commit einen Schritt voran.
    • Bei Git müssen Dateien mit Hilfe des Befehls add erst einmal für eine Änderung vorgemerkt werden.
  • branch
    • Erzeugt einen neuen Branch, auf dem dann unabhängig weiterentwickelt werden kann. Branches können beliebig benannt werden und in beliebiger Anzahl existieren.
  • checkout <branch-name>
    • Die Dateien eines Branches werden in den Arbeitsbereich kopiert.
  • merge <branch-to-merge>
    • Änderungen eines Branches werden mit einem anderen Branch zusammengeführt. Dies kann natürlich zu Konflikten führen, diehändisch bereinigt werden müssen.
  • status
    • Zeigt den aktuellen Status des Repositories an, also beispielsweise geänderte oder neu hinzugefügte Dateien.

Git Server

Die Benutzung eines gemeinsamen Servers ist auch bei Git sinnvoll möglich. Im Internet sind Git-Server nach Anmeldung frei verfügbar, in denen dann beliebig viele Repositories angelegt werden können. Bekannt sind hier GitHub und GitLab.

Ist auf einem Git-Server ein Repository eingerichtet, wird kann dieses bei vorhandener Internet-Verbindung als lokales Repository „gecloned“ werden.

Zur Verwendung eines Remote Repositories werden zusätzliche Befehle benötigt:

  • clone <directory or url>
    • Das entfernte Repository wird komplett in das aktuelle lokale Verzeichnis übertragen.
  • pull
    • Stehen auf dem entfernten Repository neue Versionen zur Verfügung, so werden diese in das lokale Verzeichnis übernommen.
    • Hierbei wird effektiv der lokal vorhandene Branch mit dem korrespondierenden entfernten Branch gemerged. Dabei können natürlich wiederum Konflikte auftreten, die im lokalen Repository gelöst werden müssen.
  • push
    • Lokale Änderungen werden in das entfernte Repository übertragen. Das entfernte Repository wird aber diese Änderungen nur akzeptieren können, wenn keine Konflikte vorhanden sind.
    • So müssen im normalen Workflow in Git vor einempusherst einmal der potenziell geänderte Stand gepulled werden. Dann werden die Stände lokal konsolidiert und anschließend erst hochgepushed.

Ein Beispiel

  • Auf GitLab.com steht ein simples Projekt mit einer einzigen Datei namens README.md zur Verfügung. Dieses wird in auf einem lokalen Rechner gecloned
    • git clone https://github.com/JavacreamTraining/simple.git
  • Die Datei kann über einen Texteditor geändert und gespeichert werden.
  • git status zeigt die Änderung an.
  • git commit -a -m "my commit message" stellt die Änderungen unter Versionskontrolle.
  • git status zeigt die Konsistenz zwischen Workspace und Repository an, es gibt keine nicht committeten Stände.
  • git push wird hier nicht funktionieren, das Repository ist auf dem Server aus nahe liegenden Gründen geschützt.

Im nächsten Teil wird das Arbeiten mit Git durch die Verwendung des Eclipse-Plugins vereinfacht werden.


Seminar zum Thema

Weiterlesen