Was ist Git?

Git hat sich zum weltweiten Standard für die Versionskontrolle entwickelt. Worum geht es also genau?

Git ist ein verteiltes Versionskontrollsystem, was bedeutet, dass ein lokaler Klon des Projekts ein vollständiges Versionskontroll-Repository darstellt. Diese voll funktionsfähigen lokalen Repositorys erleichtern das Offline- oder Remotearbeiten. Die Entwickler übertragen ihre Arbeit lokal und synchronisieren dann ihre Kopie des Repositorys mit der Kopie auf dem Server. Dieses Paradigma unterscheidet sich von der zentralisierten Versionskontrolle, bei der Clients Code mit einem Server synchronisieren müssen, bevor neue Versionen des Codes erstellt werden.

Die Flexibilität und Beliebtheit von Git machen es zu einer guten Wahl für jedes Team. Viele Entwickler und Hochschulabsolventen wissen bereits, wie man Git verwendet. Die Git-Benutzergemeinschaft hat Ressourcen zur Schulung von Entwicklern erstellt, und die Popularität von Git macht es einfach, bei Bedarf Hilfe zu erhalten. Nahezu jede Entwicklungsumgebung unterstützt Git, und Git-Befehlszeilentools sind auf allen wichtigen Betriebssystemen implementiert.

Git-Grundlagen

Jedes Mal, wenn Arbeit gespeichert wird, erstellt Git einen Commit. Ein Commit ist ein Schnappschuss aller Dateien zu einem bestimmten Zeitpunkt. Wenn sich eine Datei von einem Commit zum nächsten nicht geändert hat, verwendet Git die zuvor gespeicherte Datei. Dieses Konzept unterscheidet sich von anderen Systemen, die eine erste Version einer Datei speichern und im Laufe der Zeit eine Aufzeichnung der Deltas führen.

Linear graph of development in Git

Commits erstellen Links zu anderen Commits und bilden einen Graphen der Entwicklungsgeschichte. Es ist möglich, Code zu einem früheren Commit zurückzukehren, zu untersuchen, wie sich Dateien von einem Commit zum nächsten geändert haben, und Informationen zu prüfen, wo und wann Änderungen vorgenommen wurden. Commits werden in Git durch einen eindeutigen kryptografischen Hash des Inhalts des Commits identifiziert. Da alles gehasht ist, ist es unmöglich, Änderungen vorzunehmen, Informationen zu verlieren oder Dateien zu beschädigen, ohne dass Git dies erkennt.

Branches

Jeder Entwickler speichert Änderungen in seinem eigenen lokalen Code-Repository. Infolgedessen kann es viele verschiedene Änderungen geben, die auf ein und demselben Commit basieren. Git bietet Tools zum Isolieren und späteren Zusammenführen von Änderungen. Verzweigungen, die leichtgewichtige Verweise auf laufende Arbeiten sind, verwalten diese Trennung. Sobald die in einem Branch erstellte Arbeit abgeschlossen ist, kann sie wieder mit dem Hauptbranch (oder Trunk) des Teams zusammengeführt werden.

Commits on a branch

Dateien und Übertragungen

Dateien in Git befinden sich in einem von drei Zuständen: geändert, bereitgestellt oder übertragen. Wenn eine Datei zum ersten Mal geändert wird, sind die Änderungen nur im Arbeitsverzeichnis vorhanden. Sie sind noch nicht Teil eines Commits oder der Entwicklungsgeschichte. Der Entwickler muss stage die geänderten Dateien in den Commit aufnehmen. Der Staging-Bereich enthält alle Änderungen, die in die nächste Übertragung aufgenommen werden sollen. Sobald der Entwickler mit den bereitgestellten Dateien zufrieden ist, werden die Dateien als commit mit einer Nachricht, die beschreibt, was geändert wurde, verpackt. Diese Übergabe wird Teil der Entwicklungsgeschichte.

file_status_lifecycle-2

Mit Staging können Entwickler auswählen, welche Datei-Änderungen in einem Commit gespeichert werden sollen, um große Änderungen in eine Reihe von kleineren Commits aufzuteilen. Durch die Reduzierung des Umfangs von Commits ist es einfacher, den Commit-Verlauf zu überprüfen, um bestimmte Dateiänderungen zu finden.

Vorteile von Git

Die Vorteile von Git sind vielfältig.

Gleichzeitige Entwicklung

Jeder hat seine eigene lokale Kopie des Codes und kann gleichzeitig an seinen eigenen Zweigen arbeiten. Git arbeitet offline, da fast jede Operation lokal erfolgt.

Schnellere Freigaben

Verzweigungen ermöglichen eine flexible und gleichzeitige Entwicklung. Der Hauptzweig enthält stabilen, qualitativ hochwertigen Code, aus dem Sie veröffentlichen. Feature-Zweige enthalten laufende Arbeiten, die nach ihrer Fertigstellung in den Hauptzweig zusammengeführt werden. Durch die Trennung des Veröffentlichungszweigs von der laufenden Entwicklung ist es einfacher, stabilen Code zu verwalten und Aktualisierungen schneller bereitzustellen.

Integrierte Integration

Aufgrund seiner Beliebtheit ist Git in die meisten Tools und Produkte integriert. Jede größere IDE verfügt über integrierte Git-Unterstützung, und viele Tools unterstützen die kontinuierliche Integration, die kontinuierliche Bereitstellung, automatisierte Tests, die Verfolgung von Arbeitselementen, Metriken und die Integration von Berichtsfunktionen in Git. Diese Integration vereinfacht den täglichen Arbeitsablauf.

Starke Unterstützung durch die Gemeinschaft

Git ist Open-Source und hat sich zum De-facto-Standard für die Versionskontrolle entwickelt. An Tools und Ressourcen, die die Teams nutzen können, herrscht kein Mangel. Im Vergleich zu anderen Versionskontrollsystemen gibt es für Git viel mehr Unterstützung durch die Community, so dass es einfach ist, bei Bedarf Hilfe zu erhalten.

Git funktioniert mit jedem Team

Die Verwendung von Git mit einem Quellcode-Verwaltungstool steigert die Produktivität eines Teams, indem es die Zusammenarbeit fördert, Richtlinien durchsetzt, Prozesse automatisiert und die Sichtbarkeit und Nachvollziehbarkeit der Arbeit verbessert. Das Team kann sich auf einzelne Tools für die Versionskontrolle, die Verfolgung von Arbeitsaufgaben und die kontinuierliche Integration und Bereitstellung einigen. Oder sie können sich für eine Lösung wie GitHub oder Azure DevOps entscheiden, die alle diese Aufgaben an einem Ort unterstützt.

Pull Requests

Verwenden Sie pull requests, um Codeänderungen mit dem Team zu besprechen, bevor sie in den Hauptzweig eingebunden werden. Die Diskussionen in Pull-Requests sind von unschätzbarem Wert für die Sicherstellung der Codequalität und den Wissenszuwachs in Ihrem Team. Plattformen wie GitHub und Azure DevOps bieten ein umfangreiches Pull-Request-Erlebnis, bei dem Entwickler Datei-Änderungen durchsuchen, Kommentare hinterlassen, Commits überprüfen, Builds anzeigen und für die Freigabe des Codes stimmen können.

Branchrichtlinien

Teams können GitHub und Azure DevOps konfigurieren, um einheitliche Workflows und Prozesse im gesamten Team durchzusetzen. Sie können branch policies einrichten, um sicherzustellen, dass Pull-Anfragen vor ihrer Fertigstellung den Anforderungen entsprechen. Verzweigungsrichtlinien schützen wichtige Verzweigungen, indem sie direkte Pushs verhindern, Prüfer verlangen und saubere Builds sicherstellen.

Nächste Schritte

Installieren und Einrichten von Git