Press "Enter" to skip to content

Grundlagen der Source Control – Teil 2

Änderungen speichern mit Commits

Im ersten Teil dieser Artikelreihe haben wir uns mit dem sogenannten Repository auseinandergesetzt und gelernt, dass es die Basis für Projekte innerhalb einer Versionsverwaltung darstellt. Außerdem haben wir gesehen, wie man ein solches Repository mithilfe von Xcode erstellt.

In diesem zweiten Teil möchte ich euch nun eine der wichtigsten Funktionen vorstellen, die bei der Versionsverwaltung zum Einsatz kommen: den sogenannten Commit.

Einfach ausgedrückt kreiert ihr durch einen Commit eine Art Snapshot des aktuell Projektzustands innerhalb des zugrundeliegenden Repositories. All eure Änderungen seit dem letzten Commit (oder ein Teil dieser Änderungen) kommen darin unter und werden zusammen mit einer Beschreibung gespeichert.

Das Besondere daran: Ihr könnt jederzeit zu einem vorherigen Commit zurückkehren und dessen damaligen Zustand laden. Das kann beispielsweise sinnvoll sein, falls sich in eurem letzten Commit ein fieser Bug verbirgt, den ihr nicht auf die schnelle fixen könnt. Damit Nutzer eure App trotzdem weiter nutzen können, ladet ihr den Stand vor dieser fehlerhaften Änderung und stellt eure App auf dieser Basis erneut bereit, bis ihr eine passende Lösung umgesetzt habt.

Commit erstellen

Um einen Commit in Xcode zu erstellen wählt ihr entweder im Xcode-Menü den Punkt Source Control -> Commit… aus oder nutzt die Tastenkombination ALT CMD C. Daraufhin öffnet sich ein neues Fenster, das all eure Änderungen am Repository seit dem letzten Commit aufführt.

In diesem Fenster listet Xcode all eure Änderungen am zugrundeliegenden Repository auf, die seit dem letzten Commit vorgenommen wurden.
In diesem Fenster listet Xcode all eure Änderungen am zugrundeliegenden Repository auf, die seit dem letzten Commit vorgenommen wurden.

In der linken Spalte werden alle Dateien aufgelistet, die geändert, erstellt oder gelöscht wurden. Nach einem Klick auf eine Datei werden euch der neue sowie der alte Inhalt gegenübergestellt und ihr könnt noch einmal nachvollziehen, was genau sich getan hat. In dem Screenshot oben seht ihr beispielsweise, dass ich in einer Datei namens ViewController.swift einen Titel innerhalb der viewDidLoad()-Methode gesetzt habe.

Der schmale Balken ganz rechts in diesem Fenster (dort, wo auch der Scroll-Balken erscheint) hebt alle Stellen hervor, an denen es Änderungen innerhalb der gewählten Datei gibt. Diese Stellen sind an einem Strichsymbol zu erkennen.

Diese Hilfe bei der Orientierung ist besonders bei sehr umfangreichen Dateien nützlich. So erkennt ihr sofort, an welchen Positionen sich etwas getan hat, und könnt direkt an die jeweiligen Stellen scrollen (und den Rest getrost ignorieren).

Jede Änderung ist zudem mit einem nummerierten Overlay innerhalb der Vergleichsansicht versehen. Die Nummer spiegelt die jeweilige Änderung wieder und beginnt mit 1. Klickt ihr auf diese Schaltfläche, stehen euch weitere Optionen zur Verfügung. So könnt ihr beispielsweise diese eine Änderung rückgängig machen (Discard Change) oder aus dem Commit ausnehmen (Don‘t Commit). In letzterem Fall wird euch genau diese Änderung bei eurem nächsten Commit erneut angeboten. Das erlaubt es euch, statt aller Änderungen auf einmal auch Schritt für Schritt die von euch am Projekt durchgeführten Anpassungen als Commit ins Repository einzuspielen.

In der Dateiauswahl links steht euch übrigens eine identische Funktion in Form der Checkboxen zur Verfügung. Entfernt ihr die Checkbox neben einer Datei, wird diese nicht zusammen mit dem Commit gespeichert und verbleibt als noch offene Änderung im Projekt.

Am unteren Rand des Commit-Fensters ist Platz für eine Nachricht, die ihr dazu nutzen solltet, den Commit und die damit verbundenen Änderungen zu beschreiben. Nach einem Klick auf Commit <n> Files wird der Commit erstellt und das Fenster schließt sich wieder. <n> steht hierbei für die Anzahl der Dateien, die Teil des Commits sind.

Commits einsehen

Über den Navigator von Xcode könnt ihr alle Commits eines Projekts einsehen. Wählt dazu die zweite Schaltfläche in der oberen Leiste aus (Show the Source Control navigator) oder betätigt die Tastenkombination CMD 2. In dieser Ansicht wird euch das Repository angezeigt, darunter findet ihr verschiedene Ordner. Für den Moment interessiert uns nur der Branches-Ordner. Ein Branch stellt eine Art Gruppe dar, in der Commits zusammengefasst werden (dazu aber in einem der kommenden Artikel dieser Serie mehr).

Standardmäßig findet ihr in diesem Ordner einen Eintrag namens master, der auf den gleichnamigen Branch verweist. Der aktuell aktive Branche ist mit dem Zusatz (current) versehen. Bei neuen Xcode-Projekten, für die zusätzlich ein Repository erstellt wird, steht immer ein master-Branch als aktiver Branch bereit und darin landen standardmäßig all eure Commits. Wählt ihr entsprechend master aus, werden im Editor alle Commits dieses Branches aufgeführt; der neueste befindet sich oben. Zu sehen ist der Ersteller des Commits sowie die zugehörige Commit-Nachricht.

In dieser Ansicht werden die verschiedenen Commits eines Xcode-Projekts aufgeführt.
In dieser Ansicht werden die verschiedenen Commits eines Xcode-Projekts aufgeführt.

Fazit

Commits spielen bei der Arbeit mit Versionsverwaltungssystemen eine essenzielle Rolle und dienen uns dazu, unsere Änderungen im zugrundeliegenden Repository zu speichern. Xcode bietet für diesen Zweck ein passendes Commit-Fenster sowie eine Übersicht aller abgesetzten Commits innerhalb eines Branches.

Euer Thomas

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Kontakt und soziale Netzwerke

Impressum

Thomas Sillmann
Kettererstraße 6
D-63739 Aschaffenburg
E-Mail: contact@thomassillmann.de
Mobil: +49 (0) 151 65125650
Web: https://www.thomassillmann.de/

Inhaltlich Verantwortlicher gemäß §55 Abs. 2 RStV: Thomas Sillmann (Anschrift siehe oben)

Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehme ich keine Haftung für die Inhalte externer Links. Für die Inhalte der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.

Copyright © 2019 · Thomas Sillmann