git
Topic outline
-
Git ist ein spezifisches, verteilt arbeitendes Versionskontrollsystem, das von Linus Torvalds für die Entwicklung des Linux-Kernels kreiert wurde.
Git hat sich zum De-facto-Standard für die Versionskontrolle in der Softwareentwicklung entwickelt.
-
Versionskontrolle ist ein System, das Änderungen an einer Datei oder einer Reihe von Dateien über die Zeit hinweg aufzeichnet, so dass man später spezifische Versionen wieder aufrufen kann. Es ist ein fundamentales Werkzeug in der Softwareentwicklung, da es ermöglicht, die Geschichte einer Projektentwicklung nachzuvollziehen und Änderungen rückgängig zu machen oder zu verschiedenen Entwicklungsständen zurückzukehren. Vor allem in der gemeinsamen Entwicklung von Projekten, ist Versionskontrolle notwendig.
-
Git Repositories sind die praktische Umsetzung des Konzepts der Versionskontrolle. Sie bieten eine strukturierte Umgebung, in der die Entwicklungsarbeit nachverfolgt, gespeichert und organisiert wird. Die starke Unterstützung für Branching und Merging in Git ermöglicht es Entwicklungsteams, parallel an verschiedenen Features oder Projekten zu arbeiten, ohne sich gegenseitig zu stören. Durch die Verwendung von Git Repositories können Teams die Vorteile der Versionskontrolle voll ausschöpfen, einschließlich der Fähigkeit, frühere Versionen eines Projekts wiederherzustellen, Änderungen zu überprüfen und zusammenzuarbeiten.
-
-
-
-
Die Installation und Konfiguration von Git auf einem Standard Windows-PC ist ein einfacher Prozess, der aus einigen Schritten besteht.
Git kann auf Windows sowohl über die Git Bash als auch über PowerShell genutzt werden. Die Konfigurationsbefehle bleiben größtenteils gleich, da Git seine eigene Befehlssyntax verwendet, die unabhängig von der Shell ist.
Hier ist eine schrittweise Anleitung, wie man Git installiert, bezieht und konfiguriert, um mit der Arbeit beginnen zu können:
-
Linux-Systeme verwenden in der Regel Paketverwaltungssysteme, die die Installation von Software aus den Repositories erleichtern. Hier ist, wie Sie Git auf einem Ubuntu-System installieren und konfigurieren können:
-
-
Hier ist eine schrittweise Anleitung, wie man ein neues Repository erstellt und initialisiert, ohne zunächst den Austausch mit anderen Entwicklern oder die Nutzung eines Remote-Repositories zu berücksichtigen.
-
Die notwendigen Befehle in einem PS Skript zusammengefasst
# Klärt den Bildschirm
Clear-Host
# Setzt das Basisverzeichnis für Git-Projekte
$gitBaseDir = "E:\workspaces\git"
# Fragt den Benutzer nach dem Namen des Projekts
$projektName = Read-Host "Bitte geben Sie den Namen des Projekts ein"
# Erstellt den Pfad für das neue Projekt basierend auf dem eingegebenen Namen
$projektPfad = Join-Path -Path $gitBaseDir -ChildPath $projektName
# Erstellt das neue Verzeichnis für das Projekt
mkdir $projektPfad
# Wechselt in das Verzeichnis des neuen Projekts
Set-Location $projektPfad
# Initialisiert ein neues Git-Repository im Projektverzeichnis
git init
# Konfiguriert das aktuelle Verzeichnis als sicheres Verzeichnis für Git (falls erforderlich)
git config --global --add safe.directory $projektPfad
# Erstellt eine neue Readme-Datei im Projektverzeichnis
New-Item -ItemType File -Name "Readme.txt"
# Fügt alle neuen Dateien zum Git-Repository hinzu
git add .
# Erstellt einen initialen Commit mit den hinzugefügten Dateien
git commit -m "Initialer Commit"
# Zeigt den Status des Git-Repositories an
git status
# Zeigt das Log des Git-Repositories an
git logDas Ergebnis ist ein vollständiger Dateibaum mit dem neu erstellten Projekt als git-Repository.
-
-
Sie können umbenennen, löschen, kopieren und editieren.
Gezeigt wird ein Beispiel mit umbenennen und editieren einer Datei, -
Nach mehreren Änderungen und commits hat sich eine Historie des Projekts aufgebaut.
Das Anzeigen der Commit-Historie ist ein wichtiger Aspekt beim Arbeiten mit Git, da es Ihnen ermöglicht, die Entwicklungsgeschichte Ihres Projekts nachzuvollziehen. Git bietet mehrere Befehle und Optionen, um die Historie Ihrer Commits auf unterschiedliche und detaillierte Weise zu betrachten.
Durch den Einsatz verschiedener Optionen und Filter vongit log
können Sie spezifische Informationen abrufen, die für die Analyse und das Verständnis der Projektentwicklung nützlich sind. -
git diff
ist ein mächtiges Werkzeug im Git-Ökosystem, das die Unterschiede zwischen verschiedenen Git-Objekten, wie Commit-IDs, Arbeitsverzeichnis, Staging-Area (Index) und mehr, zeigt. Es wird hauptsächlich genutzt, um die Änderungen zu visualisieren, die gemacht wurden, aber noch nicht committet sind, oder um die Unterschiede zwischen verschiedenen Versionen eines Projekts zu vergleichen. -
Zurückrollen zu einem früheren Commit.
Das Zurückrollen (Revertieren) zu einem früheren Commit in Git ermöglicht es Ihnen, den Zustand Ihres Projekts zu einem bestimmten Zeitpunkt wiederherzustellen. Dies kann aus verschiedenen Gründen notwendig sein, beispielsweise wenn ein Fehler in die Codebasis eingeführt wurde. Git bietet mehrere Methoden, um dies zu erreichen, jede mit ihren eigenen Anwendungsfällen und Konsequenzen.
-
-
Branches ermöglichen es Entwicklern, voneinander unabhängig Features, Fixes zu bearbeiten, ohne die bestehende,aktive Hauptcodebasis (üblicherweise der
master
odermain
Branch) zu beeinträchtigen. Branches (Zweige) spielen eine zentrale Rolle im Prozess der Versionskontrolle und der modularen Softwareentwicklung. Dies kann vom einzelnen Entwickler wie auch von Teams genutzt werden.-
Grundlagen der Branches
- Isolation: Jeder Branch repräsentiert eine unabhängige Linie der Entwicklung. Änderungen in einem Branch haben keinen Einfluss auf andere Branches, bis sie absichtlich zusammengeführt werden. Dies erlaubt es Entwicklern, an neuen Features oder Bugfixes zu arbeiten, ohne die Stabilität des Hauptbranches zu gefährden.
- Flexibilität: Branches bieten die Flexibilität, verschiedene Ideen auszuprobieren und Prototypen zu entwickeln, ohne sich um unmittelbare Auswirkungen auf das Hauptprojekt sorgen zu müssen. Sie können einfach erstellt und, falls nicht mehr benötigt, gelöscht werden.
- Kollaboration: In einem Team ermöglichen Branches eine parallele Entwicklung. Teammitglieder können an unterschiedlichen Branches arbeiten und ihre Änderungen später zusammenführen. Dies unterstützt einen effizienten Workflow und minimiert Konflikte.
-
- Feature-Branches: Für die Entwicklung neuer Features werden häufig separate Branches erstellt. Dies ermöglicht eine isolierte Entwicklung und Tests, bevor das Feature in den Hauptbranch integriert wird.
- Bugfix-Branches: Ähnlich wie Feature-Branches werden Bugfix-Branches für die Arbeit an Bugfixes verwendet, um sicherzustellen, dass Korrekturen getestet werden können, ohne andere Teile des Projekts zu beeinflussen.
- Experimentelle Branches: Branches können verwendet werden, um experimentelle Ideen oder größere Änderungen zu testen, ohne die Stabilität des Projekts zu gefährden.
- Release-Branches: Einige Workflows verwenden dedizierte Branches für Release-Vorbereitungen, um letzte Anpassungen und Tests durchzuführen, bevor eine neue Version offiziell veröffentlicht wird.
-
Der Befehl
git branch <branch-name>
wird verwendet, um einen neuen Branch im aktuellen Git-Repository zu erstellen. Der neue Branch wird basierend auf dem aktuellen Stand des HEADs, also des Branches, auf dem Sie sich gerade befinden, angelegt. Wichtig zu verstehen ist, dass dieser Befehl den neuen Branch zwar erstellt, aber nicht automatisch in diesen Branch wechselt.Nach Ausführung dieses Befehls existiert ein neuer Branch
feature-x
, der denselben Commit-Verlauf wiemaster
zum Zeitpunkt der Erstellung hat. Der Befehl wechselt jedoch nicht automatisch in den neuen Branch. Um in den neuen Branch zu wechseln, müssen Sie den Befehlgit checkout feature-x
verwenden:git checkout feature-x
Hinweis
- Wenn Sie einen neuen Branch erstellen und direkt in diesen wechseln möchten, können Sie den Befehl
git checkout -b <branch-name>
verwenden. Dies ist eine verkürzte Form, die häufig verwendet wird, um beide Schritte (Erstellung und Wechsel) in einem einzigen Befehl zu kombinieren.
- Wenn Sie einen neuen Branch erstellen und direkt in diesen wechseln möchten, können Sie den Befehl
-
Im neuen Zweig des Projektes können Sie nun unabhängig vom Hauptzweig Änderungen vornehmen, Dateien hinzufügen oder auch Dateien löschen.
In diesem Beispiel wurden für die branch "ersteStruktur.." eine index.php Datei hinzugefügt und die Readme.md verändert. Danach erfolgte der commit beider Dateien. -
Es kann interessant sein, den Unterschied zur ursprünglichen Branch zu beobachten, nachdem man etwas Neues in einer Branch ausprobiert hat.
Um den Inhalt zweier Branches in Git detailliert zu vergleichen, bietet Git selbst einige nützliche Befehle, die es Ihnen ermöglichen, Unterschiede zwischen den Branches auf verschiedene Weisen zu analysieren -
Das Zusammenführen (Merging) eines Feature Branch in den Hauptbranch ist ein häufiger Schritt in der Entwicklungsarbeit. Dieser Prozess integriert Änderungen, die in einem separaten Feature Branch entwickelt wurden, zurück in den Hauptbranch (oft main oder master genannt), so dass sie Teil der Hauptcodebasis werden.
Das Mergen eines Feature-Branches in den Hauptbranch bei lokaler Arbeit mit Git ist ein einfacher Prozess, der sich auf das Wechseln in den Hauptbranch, das Durchführen des Merges und das Lösen von etwaigen Konflikten konzentriert. Im Gegensatz zur Arbeit mit einem Remote-Repository entfällt die Notwendigkeit, Änderungen zu pullen oder zu pushen, was den Prozess vereinfacht und beschleunigt. Diese Methode ermöglicht eine effektive Versionskontrolle und Feature-Integration, selbst wenn Sie offline oder in einer isolierten Entwicklungsumgebung arbeiten.
-
-
-
-
-
Die Entwicklung in einem Team stellt eine Reihe besonderer Herausforderungen dar, die sowohl technische als auch kommunikative Aspekte umfassen. Eine erfolgreiche Teamarbeit erfordert sorgfältige Planung, Koordination und Kooperation.
-
GitHub
ist ein Onlinedienst zur Softwareentwicklung und Versionsverwaltung für Softwareprojekte auf Git-Basis. Das Unternehmen GitHub, Inc. hat seinen Sitz in San Francisco in den USA. Seit dem 26. Dezember 2018 gehört das Unternehmen zu Microsoft. (Quelle Wikipedia)
-
Bei der Arbeit in einem Team, das lokale Maschinen für die Entwicklung nutzt und GitHub als Remote-Repository verwendet, gibt es einige wesentliche Schritte und Konfigurationen, die auf den Entwicklermaschinen benötigt werden, um effektiv zusammenzuarbeiten. Hier ist eine Übersicht der benötigten Schritte und Einstellungen:
-