Zum Inhalt springen

Was ist Git?

  • Python

Git ist ein Open-Source Programm zur Versionskontrolle von Dateien, das vor allem für die Programmierung in Teams genutzt wird. Damit können mehrere Personen an einem Projekt arbeiten, ohne, dass es zu Problemen mit verschiedenen Codeständen kommt. Einen zusätzlichen Hype bekam Git durch den Aufschwung von sogenannten DevOps Ansätzen in der Programmierung.

Was ist DevOps?

Der zentrale Punkt von DevOps umfasst das Team, welches von der Erstellung eines Prototypen bis zum Livegang der fertigen Anwendung und weit darüber hinaus zusammenarbeitet. Dazu werden verschiedene Teamrollen definiert, die einen reibungslosen und schnellen Ablauf gewährleisten sollen.

DevOps Lebenszyklus | Quelle: Autor

Diese Vorgehensweise unterscheidet sich zu bisherigen Praktiken darin, dass nun das Entwicklungsteam und das Operationsteam eng miteinander zusammenarbeiten. Davor wurden Anwendungen von Entwicklern erstellt und sobald sie live gingen an das Operationsteam abgegeben, welches die Erreichbarkeit und Performance des Services sicherstellen sollte. Dadurch gehen jedoch wertvolle Informationen zwischen den beiden Teams verloren, beispielsweise Verbesserungsvorschläge vom Operationsteam oder Know-How vom Entwicklungsteam.

Je nach Anwendung können auch zusätzlich zu diesen Abteilungen Experten der Security oder Qualitätssicherung ins engere Projektteam hinzugezogen werden. Vor allem dann, wenn Aspekte aus diesen Bereichen eine besondere Bedeutung für das Projekt haben.

Das Team verwendet Praktiken, die ursprünglich aus der Prozessautomatisierung bekannt sind und sich auch auf die Softwareentwicklung anwenden lassen. Im Mittelpunkt steht dabei eine endlose Schleife an Abläufen, die schrittweise durchlaufen werden.

Was sind Versionskontrollen?

Bei der Programmarbeit im Team ist eine Versionskontrolle immens wichtig. Möglicherweise arbeiten mehrere Personen an derselben Funktion im Code oder an Funktionen, die sich gegenseitig beeinflussen, da der Output der einen Funktionen der Input der anderen ist. Deshalb muss sichergestellt werden, dass sobald einzelne Aufgaben erledigt wurden, die Funktionalität des Gesamtprojekts immer noch sichergestellt ist.

Um diese verschiedenen Versionen desselben Codes verwalten zu können, gibt es drei Arten von Versionskontrollen:

  1. Lokal: Bei der lokalen Versionskontrolle wird auf dem Computer einfach ein neues Verzeichnis angelegt, in das man dann die Dateien kopiert. So hat man sichergestellt, dass dort der alte Stand als Fallback wieder nutzbar ist.
  2. Zentral: Bei einer zentralen Versionskontrolle liegt dieses Verzeichnis auf einem zentralen Server. Dann können die mitarbeitenden Programmierer sich den aktuellen Stand runterladen und auf ihr Gerät downloaden. Sobald die Änderungen vorgenommen wurden, kann das Verzeichnis auf dem Server überschrieben werden, bzw. eine Version angelegt werden.
  3. Dezentral: Die dezentrale Versionskontrolle agiert relativ ähnlich zur zentralen mit dem Unterschied, dass jeder Programmierer sich das komplette(!) Verzeichnis immer lokal runterlädt, um dann Änderungen vornehmen zu können. Somit liegt der aktuelle Stand dezentral bei allen Teammitgliedern ab.

Welche Begriffe nutzt man im Git Umfeld?

Bevor wir uns im Detail damit beschäftigen können, wie man mithilfe von Git konkrete Programmierprojekte umsetzen kann, müssen wir erst ein paar Begriffe definieren, die in diesem Umfeld häufig gebraucht werden:

  • Das Repository ist ein Verzeichnis, das den aktuellen Stand des Projekts, sowie alle Änderungen enthält. Darüber hinaus gibt es das remote Repository, das bei dem Entwickelnden lokal abgespeichert ist, wenn neue Komponenten hinzugefügt werden sollen.
  • Mit jedem Commit wird der aktuelle Stand als eine neue Version abgelegt. Es ist somit eine Art des Speicherns von Änderungen im lokalen Repository.
  • Mit einem Push-Request überschreibt man den Stand eines anderen Repositories.
  • In den Branches können gleichzeitig neue Komponenten entwickelt werden.
  • Wenn verschiedene Branches zusammengeführt werden, spricht man vom “mergen“.

Wie funktioniert Git in der Programmierung?

Git ist eine sogenannte dezentrale Versionskontrolle. Dabei hat jeder Programmierer eine Kopie des aktuellen Repositories, also des Verzeichnisses, auf seinem lokalen Computer abgespeichert. Mit dieser lokalen Kopie kann der Programmierer dann entweder neue Dateien im Projekt erstellen oder bestehende abändern. Gleichzeitig kann er auch lokal testen und sicherstellen, dass die lokalen Änderungen keine Auswirkungen auf die Funktionalität des Gesamtprogramms haben.

Nachdem der aktuellste Stand runtergeladen wurde, erstellt man einen Branch, in dem die Neuentwicklung programmiert wird. Sobald man die Änderungen vorgenommen und getestet hat, kann man sie committen, also speichern. Anschließend kann man jedoch nicht direkt den neuesten Stand einfach wieder in das Repository hochladen.

Veränderungsprozess in Git | Quelle: Autor

In der Zwischenzeit zwischen dem letzten Download des Repositories und der Umsetzung der Änderung können nämlich andere Teammitglieder das Repository überschrieben haben. Deswegen führt man einen Pull-Request durch, um den neuesten Stand des Repositories auf dem lokalen Rechner zu haben. Dann kann man diesen neuen Stand mit den Änderungen im Branch “mergen”. Dabei stellt man sicher, dass die eigenen Änderungen keine negativen Auswirkungen auf die Arbeit der anderen Teammitglieder haben, erst dann kann man seinen Stand mit einem Push-Request im Repository abspeichern.

Was sind die Vorteile von Git?

Durch die dezentrale Struktur von Git ist sichergestellt, dass die Daten eigentlich nicht verloren gehen können. Dadurch, dass jedes Teammitglied eine Version des Repositories auf seinem Rechner gespeichert hat, sollte ein halbwegs aktueller Stand des Projektes immer erhalten bleiben. Bei einer zentralen Versionskontrolle hingegen kann ein einfacher Serverausfall zum Verlust des kompletten Repositories führen.

Bei den Push-Requests kommt es nicht direkt zu einem überschreiben des Repositories, sondern es werden lediglich neue Versionen angelegt, die natürlich auch zu einem späteren Zeitpunkt wiederhergestellt werden können. Somit bietet Git die Möglichkeit auch zu alten Versionen zurückkehren zu können, wenn das gewünscht ist.

Die Leistungsfähigkeit von Git ist im Vergleich zu Wettbewerbern sehr hoch, da es äußert effizient mit Speicher- und Performancekapazitäten umgeht.

Welche Git Hosting-Plattformen gibt es?

Git ist ein verteiltes Versionskontrollsystem, das es Benutzern ermöglicht, Änderungen am Code zu verfolgen, mit anderen zusammenzuarbeiten und Code-Repositories zu verwalten. Eine der beliebtesten Funktionen von Git ist die Möglichkeit, Code-Repositories auf verschiedenen Plattformen zu hosten. Diese Plattformen bieten den Benutzern einen zentralen Ort zum Speichern und Verwalten ihres Codes sowie eine Vielzahl von Funktionen, die die Zusammenarbeit mit anderen erleichtern. Hier sind einige der beliebtesten Git-Hosting-Plattformen:

  • GitHub: Diese Website ist die größte Git-Hosting-Plattform mit über 56 Millionen Repositories (Stand 2021). Sie bietet den Nutzern eine breite Palette von Funktionen, darunter Tools zur Codeüberprüfung, Problemverfolgung und Projektverwaltung. GitHub bietet auch einen sozialen Aspekt: Nutzer können sich gegenseitig folgen, Repositories markieren und zu Open-Source-Projekten beitragen.
  • GitLab: GitLab ist eine weitere beliebte Git-Hosting-Plattform, die den Benutzern ähnliche Funktionen wie GitHub bietet. Es bietet jedoch einige einzigartige Funktionen, wie z. B. die integrierte kontinuierliche Integration und Bereitstellung sowie eine bessere Kontrolle über den Bereitstellungsprozess.
  • Bitbucket: Bitbucket ist eine Git-Hosting-Plattform im Besitz von Atlassian, dem Hersteller von Jira und Confluence. Sie bietet Benutzern ähnliche Funktionen wie die vorherigen Plattformen, z. B. Tools zur Codeüberprüfung und Problemverfolgung. Bitbucket bietet jedoch auch einige einzigartige Funktionen, wie z. B. die Unterstützung von Git- und Mercurial-Repositories und eine integrierte kontinuierliche Bereitstellung.
  • Azure DevOps: Azure DevOps ist eine Suite von Tools, die von Microsoft bereitgestellt wird und eine Git-Hosting-Plattform umfasst. Azure DevOps bietet Benutzern eine breite Palette von Funktionen, einschließlich kontinuierlicher Integration und Bereitstellung, Projektmanagement-Tools und Unterstützung für mehrere Programmiersprachen.
  • SourceForge: SourceForge ist eine der ältesten Git-Hosting-Plattformen, die auf die Anfänge der Open-Source-Software zurückgeht. Auch wenn sie nicht so viele Funktionen wie einige der anderen Plattformen hat, bietet sie den Benutzern doch einen zentralen Ort zum Speichern und Verwalten ihres Codes.

Dies sind nur einige Beispiele für die vielen Git-Hosting-Plattformen, die den Benutzern zur Verfügung stehen. Jede Plattform hat ihre eigenen einzigartigen Funktionen und Vorteile, so dass es wichtig ist, sie auf der Grundlage Ihrer spezifischen Bedürfnisse und Präferenzen zu bewerten.

Welche fortgeschrittenen Themen gibt es zu Git?

Git ist ein leistungsstarkes Werkzeug, das über die Grundlagen der Versionskontrolle hinausgeht. In diesem Abschnitt werden wir einige der fortgeschritteneren Themen behandeln.

  • Rebasing: Rebasing ist eine Technik zur Integration von Änderungen aus einem Zweig in einen anderen. Anstatt die Änderungen zusammenzuführen, werden sie beim Rebasing direkt auf den Zielzweig angewendet. Dadurch wird der Verlauf der Verzweigung linearer und übersichtlicher.
  • Untermodule: Mit den Submodulen kannst Du ein Repository als Unterverzeichnis in ein anderes Repository einbinden. Dies ist nützlich, wenn Du Code aus einem anderen Projekt in Dein eigenes Projekt aufnehmen möchtest. Die Arbeit mit Submodules kann etwas kompliziert sein, aber sie können ein mächtiges Werkzeug sein, wenn sie richtig eingesetzt werden.
  • Git-Hooks: Die Hooks sind Skripte, die an bestimmten Punkten im Arbeitsablauf automatisch ausgeführt werden. Du kannst beispielsweise einen Pre-Commit-Hook verwenden, um Tests auszuführen, bevor Du Deinen Code committest. Diese Skripte können verwendet werden, um Codierungsstandards durchzusetzen, sich wiederholende Aufgaben zu automatisieren und vieles mehr.
  • Git bisect: Dieser Befehl hilft Dir, den Commit zu finden, der einen Fehler eingeführt hat. Du beginnst mit der Identifizierung eines “guten” Commits (ein Commit, bei dem der Code funktioniert) und eines “schlechten” Commits (ein Commit, bei dem der Code fehlerhaft ist). Git bisect prüft dann die Zwischen-Commits und fordert Dich auf, jeden einzelnen zu testen, bis es den Commit findet, der den Fehler eingeführt hat.
  • Git stash: Damit kannst Du Änderungen, die Du noch nicht übertragen willst, vorübergehend speichern. Dies kann nützlich sein, wenn Du zu einem anderen Zweig wechseln oder Änderungen aus einem entfernten Repository ziehen musst. Das Speichern von Änderungen ermöglicht es Dir, Dein Arbeitsverzeichnis sauber zu halten, ohne dass Änderungen verloren gehen.

Dies sind nur einige Beispiele für die fortgeschrittenen Themen, die Du in Git erforschen kannst. Wenn Du diese Techniken und Werkzeuge beherrschst, kannst Du ein effizienter und effektiver Benutzer werden.

Das solltest Du mitnehmen

  • Git ist eine dezentrale Versionskontrolle mit dessen Hilfe komplexe Programmierprojekte in Teamarbeit ausgeführt werden können.
  • Mit der Hilfe von Git können mehrere Personen am gleichen Projekt arbeiten und Änderungen vornehmen und trotzdem sicherstellen, dass die einzelnen Funktionen später als Ganzes funktionieren.
  • Die Vorteile von Git bestehen darin, dass die Ausfallwahrscheinlichkeit sehr gering ist, da jedes Mitglied einen halbwegs aktuellen Stand des Repositories auf dessen Gerät gespeichert hat. Außerdem kann immer wieder auf ältere Versionsstände zurückgegriffen werden.
Conditional Statements in Python / If else Python / Bedingte Anweisung

Python-Tutorial: Bedingte Anweisungen und If/Else Blöcke

Lernen Sie, wie man bedingte Anweisungen in Python verwendet. Verstehen Sie if-else und verschachtelte if- und elif-Anweisungen.

XOR

Was ist XOR?

Entdecken Sie XOR: Die Rolle des Exklusiv-Oder-Operators in Logik, Verschlüsselung, Mathematik, KI und Technologie.

Python Exception Handling / Ausnahmebehandlung in Python

Wie kannst Du die Ausnahmebehandlung in Python umsetzen?

Die Kunst der Ausnahmebehandlung in Python: Best Practices, Tipps und die wichtigsten Unterschiede zwischen Python 2 und Python 3.

Python Modules

Was sind Python Module?

Erforschen Sie Python Module: Verstehen Sie ihre Rolle, verbessern Sie die Funktionalität und rationalisieren Sie die Programmierung.

Python Comparison Operators / Python Vergleichsoperatoren

Was sind Python Vergleichsoperatoren?

Beherrschen Sie die Python Vergleichsoperatoren für präzise Logik und Entscheidungsfindung beim Programmieren in Python.

Python Input / Python Output

Was sind Python Inputs und Outputs?

Python Inputs und Outputs beherrschen: Erforschen Sie Eingaben, Ausgaben und den Umgang mit Dateien in der Python-Programmierung.

Andere Beiträge zum Thema Git

  • w3schools bietet ausführliche Erläuterungen zu nützlichen Git-Befehlen.
Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Niklas Lang

Seit 2020 bin ich als Machine Learning Engineer und Softwareentwickler tätig und beschäftige mich leidenschaftlich mit der Welt der Daten, Algorithmen und Softwareentwicklung. Neben meiner Arbeit in der Praxis unterrichte ich an mehreren deutschen Hochschulen, darunter die IU International University of Applied Sciences und die Duale Hochschule Baden-Württemberg, in den Bereichen Data Science, Mathematik und Business Analytics.

Mein Ziel ist es, komplexe Themen wie Statistik und maschinelles Lernen so aufzubereiten, dass sie nicht nur verständlich, sondern auch spannend und greifbar werden. Dabei kombiniere ich praktische Erfahrungen aus der Industrie mit fundierten theoretischen Grundlagen, um meine Studierenden bestmöglich auf die Herausforderungen der Datenwelt vorzubereiten.

Schlagwörter:
Cookie Consent mit Real Cookie Banner