DEV Community

Marco
Marco

Posted on • Originally published at blog.disane.dev

Git: Die Geschichte, Anwendung und Vorteile der Quellcodeverwaltung

Git erklärt: Geschichte, Nutzung und Vorteile der Quellcodeverwaltung. Lerne Branching, Befehle und Produktivitätssteigerung! 🚀


Git ist ein verteiltes Versionskontrollsystem, das ursprünglich von Linus Torvalds für die Entwicklung des Linux-Kernels entwickelt wurde. Seit seiner Einführung im Jahr 2005 hat sich Git als das führende Werkzeug für die Quellcodeverwaltung in der Softwareentwicklung etabliert. In diesem Artikel werden wir die Geschichte von Git, seine Verwendung in einem Beispielprojekt, die gängigsten Befehle und die Vorteile der Quellcodeverwaltung untersuchen.

GitPreview image

Die Geschichte von Git 📜

Die Geschichte von Git beginnt mit der Notwendigkeit eines Versionskontrollsystems für den Linux-Kernel. Vor Git verwendeten die Entwickler ein proprietäres System namens BitKeeper. Aufgrund von Lizenzstreitigkeiten im Jahr 2005 war die Linux-Gemeinschaft gezwungen, eine eigene Lösung zu entwickeln. Linus Torvalds entwarf Git mit folgenden Zielen:

  • Geschwindigkeit
  • Einfachheit im Design
  • Unterstützung für nicht-lineare Entwicklung (tausende parallele Branches)
  • Vollständig verteilt
  • Starke Unterstützung für nicht-lineare Entwicklung

Torvalds' Ziel war es, ein System zu schaffen, das effizient und robust genug ist, um die Bedürfnisse eines so großen und komplexen Projekts wie den Linux-Kernel zu erfüllen.

Verwendung von Git in einem Beispielprojekt 🚀

Um die Verwendung von Git zu demonstrieren, erstellen wir ein einfaches Beispielprojekt. Angenommen, wir arbeiten an einer Website. Hier sind die Schritte, um Git in unserem Projekt zu verwenden:

Repository initialisieren

Zuerst initialisieren wir ein neues Git-Repository:

git init

Enter fullscreen mode Exit fullscreen mode

Dies erstellt ein verstecktes .git-Verzeichnis, das alle Git-bezogenen Informationen speichert.

Dateien hinzufügen und committen

Nun fügen wir unsere Projektdateien hinzu und erstellen unseren ersten Commit:

echo "# Meine Website" > README.md
git add README.md
git commit -m "Initial commit"

Enter fullscreen mode Exit fullscreen mode

Änderungen verfolgen und commiten

Angenommen, wir fügen eine neue Datei index.html hinzu:

echo "<!DOCTYPE html><html><head><title>Meine Website</title></head><body><h1>Willkommen!</h1></body></html>" > index.html
git add index.html
git commit -m "Füge index.html hinzu"

Enter fullscreen mode Exit fullscreen mode

Branches verwenden

Branches sind ein mächtiges Feature von Git. Sie ermöglichen parallele Entwicklungsstränge. Erstellen wir einen neuen Branch für eine neue Funktion:

git checkout -b feature-neue-funktion

Enter fullscreen mode Exit fullscreen mode

Jetzt arbeiten wir in einem neuen Branch und können Änderungen vornehmen, ohne den main-Branch zu beeinflussen.

Änderungen mergen

Nach Abschluss der Arbeiten an unserer neuen Funktion mergen wir sie zurück in den main-Branch:

git checkout main
git merge feature-neue-funktion

Enter fullscreen mode Exit fullscreen mode

Falls es Konflikte gibt, müssen diese manuell gelöst werden.

Gängigste Git-Befehle in einer Tabelle 📋

Hier sind die gängigsten Git-Befehle zusammengefasst:

Befehl Beschreibung
git init Initialisiert ein neues Git-Repository
git clone Klont ein bestehendes Repository
git add Fügt eine Datei zur Staging-Area hinzu
git commit -m "" Commitet die Dateien in der Staging-Area mit einer Nachricht
git status Zeigt den Status des Arbeitsverzeichnisses an
git log Zeigt die Commit-Historie an
git branch Listet alle Branches auf
git checkout Wechselt zu einem anderen Branch
git merge Merged einen Branch in den aktuellen Branch
git pull Holt und integriert Änderungen von einem entfernten Repository
git push Sendet lokale Commits zu einem entfernten Repository

Vorteile der Quellcodeverwaltung mit Git 🌟

Git bietet viele Vorteile, die es zu einem unverzichtbaren Werkzeug in der Softwareentwicklung machen:

  • Nachvollziehbarkeit: Alle Änderungen im Code sind nachvollziehbar und dokumentiert.
  • Branching und Merging: Erleichtert die parallele Entwicklung und das Zusammenführen von Änderungen.
  • Verteilte Entwicklung: Jeder Entwickler hat eine vollständige Kopie des Repositories und kann offline arbeiten.
  • Zusammenarbeit: Erleichtert die Zusammenarbeit in Teams durch zentrale Repositories und Pull-Requests.
  • Fehlerbehebung: Einfache Rückkehr zu früheren Versionen bei Fehlern.
  • Sicherheit: Der Quellcode liegt nur nur bei einem Entwickler vor und kann so bei Problemen oder Ausfällen schnell wiederhergestellt und ggf. auch zurückgespielt werden.

Arbeiten mit Branches 🌿

Branches ermöglichen es Entwicklern, an verschiedenen Features oder Bugs parallel zu arbeiten, ohne die Stabilität des Hauptcodes zu gefährden. Jeder Branch repräsentiert eine separate Linie der Entwicklung.

Branch erstellen und wechseln:

git branch <branchname>
git checkout <branchname>

Enter fullscreen mode Exit fullscreen mode

Änderungen mergen:

git checkout main
git merge <branchname>

Enter fullscreen mode Exit fullscreen mode

Branch löschen:

git branch -d <branchname>
Enter fullscreen mode Exit fullscreen mode

Produktivität und Geschwindigkeit steigern mit Git 🚀

Git hilft, die Produktivität zu steigern, indem es:

  • Konfliktlösung vereinfacht: Tools wie git merge und git rebase helfen, Konflikte zu lösen.
  • Kontinuierliche Integration: Integrationstools wie Jenkins oder Travis CI arbeiten nahtlos mit Git zusammen.
  • Automatisierung: Skripte und Hooks können automatisierte Aufgaben vor oder nach bestimmten Aktionen ausführen.

Git Hosting-Dienste 🖥️

Neben der lokalen Nutzung von Git gibt es zahlreiche Hosting-Dienste, die Git-Repositories online verwalten. Zu den bekanntesten gehören:

  • GitHub: Der populärste Git-Hosting-Dienst, der eine große Community und viele Open-Source-Projekte beheimatet.
  • GitLab: Bietet ähnliche Funktionen wie GitHub, zusätzlich aber auch integrierte CI/CD-Pipelines.
  • Bitbucket: Besonders beliebt bei Teams, die mit Atlassian-Produkten wie Jira arbeiten.
  • SourceForge: Eine der ältesten Plattformen für die Verwaltung von Open-Source-Projekten.

Diese Dienste bieten nicht nur Hosting, sondern auch zahlreiche Tools für Code-Review, Projektmanagement und Zusammenarbeit.

Git Hooks 🔗

Git Hooks sind Skripte, die automatisch bei bestimmten Ereignissen in einem Git-Repository ausgeführt werden. Sie können dazu verwendet werden, Workflows zu automatisieren und sicherzustellen, dass bestimmte Bedingungen vor oder nach einem Commit erfüllt sind.

Beispiele für Hooks sind:

  • Pre-commit: Führt Aktionen aus, bevor ein Commit gemacht wird (z.B. Code-Formatierung).
  • Pre-push: Führt Aktionen aus, bevor Änderungen gepusht werden (z.B. Testen des Codes).
  • Post-merge: Führt Aktionen aus, nachdem ein Branch gemergt wurde (z.B. Abhängigkeiten installieren).

Umgang mit großen Dateien 🗂️

Git ist nicht für die Verwaltung großer Binärdateien optimiert. Hierfür gibt es Erweiterungen wie Git Large File Storage (LFS), die das Speichern und Verwalten großer Dateien effizienter gestalten. Git LFS ersetzt große Dateien durch Verweise in Ihrem Repository und speichert die eigentlichen Dateien in einem separaten Speicher.

Best Practices für die Nutzung von Git 📏

Um das Beste aus Git herauszuholen, sollten folgende Best Practices beachtet werden:

  • Kleine, häufige Commits: Besser häufig kleine Änderungen committen, als selten große Änderungen.
  • Aussagekräftige Commit-Nachrichten: Commit-Nachrichten sollten beschreiben, was geändert wurde und warum.
  • Branching-Strategien: Verwendung von Strategien wie Git-Flow oder GitHub Flow zur Verwaltung von Branches und Releases.
  • Code-Reviews: Regelmäßige Code-Reviews durch andere Teammitglieder verbessern die Code-Qualität und fördern Wissenstransfer.

Git in DevOps und CI/CD 📈

In modernen Entwicklungsumgebungen spielt Git eine zentrale Rolle in DevOps- und CI/CD-Pipelines. Automatisierte Prozesse wie Continuous Integration (CI) und Continuous Deployment (CD) sind ohne ein zuverlässiges Versionskontrollsystem kaum vorstellbar. Git ermöglicht es, Änderungen kontinuierlich zu integrieren und bereitzustellen, was die Softwarequalität verbessert und die Time-to-Market verkürzt.

  • Continuous Integration: Automatisiert das Testen und Zusammenführen von Code-Änderungen.
  • Continuous Deployment: Automatisiert das Bereitstellen von Code-Änderungen in Produktionsumgebungen.

Git GUI-Tools 🖱️

Für Entwickler, die nicht nur über die Kommandozeile arbeiten möchten, gibt es eine Vielzahl von Git-GUI-Tools, die die Arbeit mit Git erleichtern:

  • Sourcetree: Ein kostenloses GUI-Tool von Atlassian, das Git- und Mercurial-Repositorys unterstützt.
  • GitKraken: Ein benutzerfreundlicher Git-Client mit zahlreichen Funktionen für die Verwaltung von Repositories.
  • TortoiseGit: Ein Windows-Explorer-Plugin, das die Verwaltung von Git-Repositories in Windows integriert.
  • GitHub Desktop: Ein offizielles GUI-Tool von GitHub zur Verwaltung von Repositories auf GitHub.

Man muss also kein Konsolen-Nerd sein um Git zu benutzen. Viele IDEs, wie mein Liebling Visual Studio Code, haben bereits Git integriert.

Visual Studio Code - Code Editing. RedefinedPreview imageVisual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

Microsofts Umstieg von TFS zu Git 📈

Seit Microsoft GitHub im Jahr 2018 für 7,5 Milliarden Dollar übernommen hat, hat das Unternehmen begonnen, seine Entwicklungswerkzeuge verstärkt auf Git auszurichten. Dieser Schritt war Teil von Microsofts größerer Strategie, die Entwicklergemeinde stärker zu unterstützen und offene Entwicklungsmodelle zu fördern​​. Infolgedessen wird der Team Foundation Server (TFS), Microsofts eigenes Versionskontrollsystem, zunehmend durch Azure DevOps und die Integration von Git ersetzt.

Microsoft acquires GitHub - StoriesPreview imageMicrosoft acquired GitHub, a popular code-repository service used by many developers and large companies, for $7.5 billion in stock. The deal, which heightened Microsoft’s focus on open-source development, aimed to increase enterprise use of GitHub and bring Microsoft’s developer tools and services to new audiences. By joining forces with GitHub, CEO Satya Nadella said, “we strengthen our commitment to developer freedom, openness and innovation.”

TFS war über Jahre hinweg in vielen Unternehmen im Einsatz, doch Microsoft fördert nun aktiv die Nutzung von Git. Dies umfasst umfassende Support- und Migrationswerkzeuge, die den Übergang von TFS zu Git erleichtern sollen. Beispielsweise bietet Microsoft detaillierte Anleitungen und Tools wie Git-TFS, um die Migration von TFVC (Team Foundation Version Control) zu Git zu unterstützen​​.

Git and TFVC version control - Azure ReposPreview imageChoose which type of version control to use in Azure Repos.

Dieser Wandel zeigt nicht nur die Akzeptanz von Git als Standard für die Quellcodeverwaltung, sondern auch Microsofts Engagement für Entwicklerfreiheit, Offenheit und Innovation. Die Integration von GitHub in Microsofts Produktpalette zielt darauf ab, die Nutzung von Git in der Unternehmenswelt zu steigern und Entwickler mit modernen, effizienten Werkzeugen auszustatten.

Announcing Git Integration with TFSPreview imageDistributed Version Control (DVCS) has a growing following. It enables a set of workflows that can be very handy and Git is an increasingly popular DVCS solution. Today, we are announcing Git-tf, a solution that enables you to work locally with a Git repo – edit,

Fazit 📃

Git ist ein mächtiges und flexibles Werkzeug für die Quellcodeverwaltung. Es erleichtert die Zusammenarbeit, verbessert die Nachvollziehbarkeit und steigert die Produktivität. Mit seinen umfangreichen Features und der Unterstützung für verteilte Entwicklung ist Git ein unverzichtbares Werkzeug für Entwickler. Zum Erlernen von Git und der Arbeitsweise die damit verbunden ist, gibt es sehr interessante Projekte:

Oh My Git! by blinry, bleeptrackPreview imageAn open source game about learning Git!

Git ImmersionNo image availableA guided tour that walks through the fundamentals of Git

Learn Git BranchingPreview imageAn interactive Git visualization tool to educate and challenge!

Hast Du Fragen oder möchtest Du Deine Erfahrungen mit Git teilen? Hinterlasse einen Kommentar! ☝️


If you like my posts, it would be nice if you follow my Blog for more tech stuff.

Top comments (0)