Git in der Softwareentwicklung

Dieses Tutorial bietet eine detaillierte Einführung in die Nutzung von Git für die Zusammenarbeit, wenn die Dateien auf einem Server liegen.

Bitte lesen Sie zuerst die theoretischen Grundlagen von Versionskontrollsystemen unter diesem Link aufmerksam durch, um ein Verständnis für VCS und Git zu bekommen.

Konfiguration individueller Git-Einstellungen

Da mehrere Studierende denselben Benutzeraccount auf dem Server nutzen, muss jeder Studierende seine eigene Git-Konfigurationsdatei (.gitconfig) anlegen. Dies ermöglicht eine individuelle Zuordnung der Beiträge zu jedem Studierenden.

Schritt-für-Schritt-Anleitung zur Einrichtung der .gitconfig Datei

  1. SSH-Verbindung herstellen: Verbinden Sie sich via SSH mit dem Server, auf dem Sie arbeiten. Nutzen Sie dazu ein Terminal oder eine SSH-Client-Software.
  2. Bash
    ssh benutzername@serveradresse
  3. Navigieren zum Home-Verzeichnis: Nachdem Sie sich eingeloggt haben, befinden Sie sich in Ihrem Home-Verzeichnis. Sie können mit dem Befehl pwd überprüfen, in welchem Verzeichnis Sie sich befinden.
  4. Bash
    pwd
  5. Datei mit Nano erstellen: Verwenden Sie den Editor Nano, um Ihre .gitconfig-Datei zu erstellen. Geben Sie den folgenden Befehl ein, um Nano mit dem Dateinamen zu starten. Wichtig: Jedes Tandemmitglied benötigt eine eigene Datei! Also .gitconfig-isa1a .gitconfig-isa1b .gitconfig-isa1c
  6. Bash
    nano .gitconfig-isa1a
  7. Datei bearbeiten: Fügen Sie die notwendigen Konfigurationsdaten in Nano hinzu. Beispiel für den Inhalt einer .gitconfig-Datei:
  8. Git Config
    
    [user]
        name = Ihr Name
        email = Ihre Email-Adresse
    
  9. Datei speichern und schließen: Speichern Sie die Änderungen in Nano, indem Sie Ctrl+O drücken, gefolgt von Enter, und schließen Sie den Editor mit Ctrl+X.

Wichtige Hinweise:

  1. Bitte als Erstes den Infoblock zu VCS durchlesen: Hier klicken
  2. Lesen Sie das folgende Tutorial ganz genau durch (nicht nur Copy & Paste des Codes!)
  3. Schauen Sie sich die bisherigen Tutorials an.
  4. Verwenden Sie KI-Tools wie ChatGPT, Perplexity oder Blackbox AI für Unterstützung. Posten Sie Fehlermeldungen oder Code-Zeilen direkt. Oder stellen Sie einfach Ihre Fragen
  5. Recherchieren Sie eigenständig im Internet.
  6. Arbeiten Sie zusammen! Fragen Sie Ihre Kommilitonen/innen.

Weitere wichtige Punkte zur Beachtung:

  • SSH ist nicht über Eduroam möglich.
  • Unter Windows müssen Sie Putty oder die PowerShell verwenden.
  • Wenn im Terminal nur ein $ angezeigt wird, ist die Shell nicht aktiviert. Geben Sie bash ein, um die Bash-Shell zu starten.
  • Verwenden Sie den Filebrowser für die Bearbeitung und Erstellung von Dateien und Verzeichnissen unter filebrowser.edumake.de.
  • Sollten Sie Dateien im Filebrowser nicht speichern können, bitte bei Herrn Franke melden.
  • Bewegen Sie sich in Ihrer Entwicklungsumgebung (venv). Nur von hier kann Flask gestartet werden!
  • Verschaffen Sie sich mit ls -a einen Überblick im Terminal.

Einrichtung von Bash-Aliases für individuelle Git-Konfigurationen

Um den Wechsel zwischen verschiedenen Git-Konfigurationen zu vereinfachen, können Sie Bash-Aliases einrichten. Dies ermöglicht Ihnen, schnell die richtige Konfigurationsdatei zu verwenden, wenn Sie Git-Befehle ausführen.

Verwendung von Git ohne Aliases

Wenn Sie keine Aliases verwenden möchten, können Sie stattdessen die `--config` Option direkt in Ihren Git-Befehlen verwenden, um die spezifische Konfigurationsdatei anzugeben. Dies ist besonders nützlich, wenn Sie sicherstellen möchten, dass jeder Commit mit den richtigen Benutzerinformationen verbunden ist, ohne globale Einstellungen zu ändern.

Beispielbefehle ohne Aliases

Unten finden Sie Beispiele, wie Sie Git-Kommandos ohne die Verwendung von Aliases ausführen können:

Bash

git --config /home/isa1/.gitconfig-isa1a commit -m "Änderungen durchgeführt"
git --config /home/isa1/.gitconfig-isa1b add .
git --config /home/isa1/.gitconfig-isa1a push

Diese Methode erfordert, dass Sie jedes Mal, wenn Sie einen Git-Befehl ausführen, den vollständigen Pfad zur Konfigurationsdatei angeben. Dies kann etwas umständlicher sein als die Verwendung von Aliases, bietet jedoch eine flexible Kontrolle über die verwendeten Benutzerkonfigurationen. Einfacher geht es jedoch mit Bash-Aliases:

Schritt-für-Schritt-Anleitung zur Einrichtung von Bash-Aliases

  1. Zugriff auf die Bash-Konfigurationsdatei: Öffnen Sie Ihre Bash-Profil-Datei (.bashrc oder .bash_profile) mit einem Editor wie Nano.
  2. Bash
    nano ~/.bashrc
  3. Alias-Befehle hinzufügen: Fügen Sie am Ende Ihrer Bash-Profil-Datei die Alias-Befehle ein. Erstellen Sie für jedes Tandemmitglied einen eigenen Alias, der die jeweilige .gitconfig-Datei verwendet.
  4. Bash
    
    alias gitisa1a='git --config ~/.gitconfig-isa1a'
    alias gitisa1b='git --config ~/.gitconfig-isa1b'
    
  5. Änderungen speichern und Bash neu laden: Speichern Sie die Änderungen und laden Sie Ihr Bash-Profil neu, um die Aliases sofort verwenden zu können.
  6. Bash
    source ~/.bashrc

Verwendung der Aliases

Um Ihre Git-Kommandos mit der spezifischen Konfigurationsdatei auszuführen, nutzen Sie einfach den entsprechenden Alias. Zum Beispiel:

Bash
gitisa1a commit -m "Änderungen durchgeführt"

Diese Methode stellt sicher, dass die richtige .gitconfig-Datei verwendet wird, was die Zuordnung der Beiträge zu den richtigen Personen erleichtert.

Einführung in Git

Dieses Tutorial führt Sie in die Grundlagen von Git ein, einem leistungsstarken Tool zur Versionskontrolle, das es Entwicklern ermöglicht, Änderungen an ihren Projekten effektiv zu verwalten und mit anderen zusammenzuarbeiten.

Wichtige Git-Konzepte und Befehle

Bevor wir in die spezifischen Befehle eintauchen, ist es wichtig, einige Kernkonzepte von Git zu verstehen:

Detaillierte Git-Befehlsübersicht

Nun, da Sie die Grundkonzepte kennen, schauen wir uns einige der meistverwendeten Git-Befehle an:

Befehl Beschreibung
git init Erstellt ein neues Git-Repository im aktuellen Verzeichnis. Dies ist der erste Schritt, um die Versionskontrolle für Ihr Projekt zu beginnen.
git add Fügt Änderungen in den Index hinzu. Dieser Befehl sagt Git, welche Dateiänderungen in den nächsten Commit aufgenommen werden sollen.
git commit Erstellt einen neuen Commit aus den Änderungen, die im Index gespeichert wurden. Jeder Commit wird zusammen mit einer Nachricht gespeichert, die erklärt, was geändert wurde.
git push Schickt Ihre lokalen Commits zum Remote-Server. Dies ist wichtig, um Ihre Arbeit mit anderen zu teilen.
git pull Zieht die neuesten Änderungen vom Remote-Server und aktualisiert Ihr lokales Repository. Dies hilft Ihnen, Konflikte zu vermeiden und auf dem Laufenden zu bleiben.
git branch Erstellt, listet oder löscht Branches. Dieser Befehl ist zentral für die Arbeit an verschiedenen Teilen eines Projekts gleichzeitig.
git merge Führt Änderungen aus einem Branch in einen anderen ein. Dies ist der Schlüssel zum Zusammenführen von abgeschlossenen Features in den Hauptentwicklungszweig.

Anwendungsbeispiele

Im Folgenden finden Sie praktische Beispiele, die zeigen, wie Sie die oben genannten Befehle verwenden können:

Beispiel

# Initialisieren eines neuen Git-Repositories
git init

# Hinzufügen einer Datei zum Index
git add README.md

# Erstellen eines Commits
git commit -m "Erster Commit mit einer README-Datei"

# Erstellen eines neuen Branches
git branch feature-branch

# Wechseln zu einem Branch
git checkout feature-branch

# Zusammenführen eines Branches in den master
git checkout master
git merge feature-branch

# Pushen der Änderungen zum Remote-Server
git push origin master
        

Anwendungsbeispiel erklärt

Dieses Beispiel zeigt Ihnen, wie Sie ein Git-Repository initialisieren, Änderungen hinzufügen, einen Commit erstellen, mit Branches arbeiten und letztendlich Ihre Änderungen auf einen Remote-Server pushen.

  1. Repository initialisieren:

    Der Befehl git init wird verwendet, um ein neues lokales Git-Repository zu erstellen. Dies ist der erste Schritt in der Versionskontrolle. Er erstellt ein verstecktes Verzeichnis namens .git, das alle notwendigen Metadaten enthält, die Git zum Verwalten der Versionen Ihrer Dateien benötigt.

    git init
  2. Datei zum Index hinzufügen:

    Mit git add fügen Sie eine spezifische Datei zum Index hinzu, in diesem Fall README.md. Der Index ist eine Vorbereitungsbereich, in dem Git Änderungen vor dem Commit sammelt.

    git add README.md
  3. Erstellen eines Commits:

    Ein Commit ist eine Aufzeichnung Ihrer Änderungen, die Sie am Index vorgenommen haben. Mit dem Befehl git commit erstellen Sie einen Commit und fügen eine Nachricht hinzu, die beschreibt, was geändert wurde, hier zum Beispiel "Erster Commit mit einer README-Datei".

    git commit -m "Erster Commit mit einer README-Datei"
  4. Branch erstellen und wechseln:

    Branches erlauben es Ihnen, von der Hauptlinie der Entwicklung abzuzweigen, um an neuen Features zu arbeiten, ohne die Hauptlinie zu beeinflussen. git branch feature-branch erstellt einen neuen Branch namens "feature-branch". Mit git checkout feature-branch wechseln Sie dann in diesen Branch.

    
    git branch feature-branch
    git checkout feature-branch
                    
  5. Branch zusammenführen:

    Wenn Ihre Arbeit im Branch abgeschlossen ist, können Sie diese Änderungen zurück in den Hauptbranch (meistens master oder main) integrieren. Dazu wechseln Sie zuerst zurück in den Hauptbranch mit git checkout master und führen dann git merge feature-branch aus, um die Änderungen zusammenzuführen.

    
    git checkout master
    git merge feature-branch
                    
  6. Änderungen zum Remote-Server pushen:

    Nachdem Sie Ihre lokalen Änderungen vorgenommen haben, können Sie diese zum Remote-Server pushen, damit auch andere Teammitglieder darauf zugreifen können. git push origin master sendet die Commits aus Ihrem lokalen master-Branch zum Remote-Repository.

    git push origin master

Arbeiten mit Git in Ihrer Subdomain

In diesem Kapitel lernen Sie, wie Sie in Ihrem spezifischen Subdomain-Verzeichnis ein Git-Repository initialisieren und gemeinsam an einer neuen Datei arbeiten. Ziel ist es, eine Kontaktseite für Ihre bereits bestehende Beispiel-Homepage zu erstellen.

Repository in Ihrer Subdomain initialisieren

Zunächst müssen Sie zu Ihrem Subdomain-Verzeichnis navigieren und dort ein Git-Repository initialisieren. Dies ermöglicht es Ihnen, alle Änderungen an Dateien in diesem Verzeichnis zu verfolgen.

  1. Zum Subdomain-Verzeichnis navigieren:

    Öffnen Sie ein Terminal und verwenden Sie den Befehl cd, um in das Verzeichnis Ihrer Subdomain zu wechseln, z.B. /var/www/isa1.

    Bash
    cd /var/www/isa1
  2. Git-Repository initialisieren:

    Verwenden Sie den Befehl git init, um in diesem Verzeichnis ein neues Git-Repository zu initialisieren. Dadurch wird ein neuer Ordner namens .git erstellt, der alle notwendigen Git-Dateien enthält.

    Bash
    git init

Erstellung einer neuen Datei: Contact.html

Nachdem das Repository initialisiert wurde, erstellen Sie eine neue HTML-Datei, die als Kontaktseite dient.

  1. Datei erstellen:

    Verwenden Sie einen Editor wie Nano, um die Datei contact.html zu erstellen. Fügen Sie HTML-Code hinzu, der die Struktur Ihrer Kontaktseite bildet.

    HTML
    <!-- Grundstruktur Ihrer Kontaktseite -->
    <html>
    <head>
        <title>Kontaktseite</title>
    </head>
    <body>
        <h1>Kontaktieren Sie uns</h1>
        <p>Email: info@example.com</p>
    </body>
    </html>
  2. Änderungen speichern und commiten:

    Nachdem Sie die Datei bearbeitet haben, speichern Sie die Änderungen und verwenden Sie Git-Befehle, um die Änderungen zu verfolgen und zu commiten.

    Bash
    git add contact.html
    git commit -m "Kontaktseite erstellt"

Weiterer Workflow mit Git

Nachdem Sie Ihre Kontaktseite erstellt und den ersten Commit durchgeführt haben, werden Sie wahrscheinlich weitere Updates vornehmen und möglicherweise mit Ihren Teammitgliedern zusammenarbeiten wollen. Hier sind die Schritte für einen fortgeschrittenen Git-Workflow:

  1. Änderungen vornehmen:

    Nehmen Sie weitere Änderungen an Ihrer contact.html vor. Zum Beispiel könnten Sie ein Kontaktformular hinzufügen.

    HTML
    <form action="submit_form.php" method="POST">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name"><br>
        <label for="email">Email:</label>
        <input type="email" id="email" name="email"><br>
        <input type="submit" value="Submit">
    </form>
  2. Änderungen überprüfen:

    Verwenden Sie git status, um zu sehen, welche Dateien geändert wurden und noch gestaged und committed werden müssen.

    Bash
    git status
  3. Änderungen hinzufügen:

    Fügen Sie die geänderten Dateien zum Staging-Bereich hinzu mit git add.

    Bash
    git add contact.html
  4. Änderungen commiten:

    Speichern Sie Ihre Änderungen im lokalen Repository mit git commit.

    Bash
    git commit -m "Kontaktformular hinzugefügt"
  5. Branches verwenden:

    Wenn Sie an einem neuen Feature arbeiten, das noch nicht in den Hauptbranch integriert werden soll, können Sie einen neuen Branch erstellen.

    Bash
    git branch feature-kontaktformular
    git checkout feature-kontaktformular
  6. Branches zusammenführen:

    Nachdem das Feature fertiggestellt ist, können Sie den neuen Branch zurück in den Hauptbranch (z.B. master) mergen.

    Bash
    git checkout master
    git merge feature-kontaktformular

Dieser Workflow umfasst die grundlegenden Schritte, die Sie beim Arbeiten mit Git durchführen müssen, einschließlich der Verwendung von Branches und dem Mergen von Änderungen, um eine effektive Versionenkontrolle Ihrer Projekte zu gewährleisten.

Aufgaben zur Vertiefung der Git-Kenntnisse

Aufgabe 1: Branching und Merging

Ziel: Verstehen der Verwendung von Branches in Git, um neue Features sicher zu entwickeln, ohne den Hauptentwicklungszweig zu beeinträchtigen.

  1. Erstellen Sie einen neuen Branch mit dem Befehl: git branch feature-neu.
  2. Wechseln Sie zu diesem Branch mit dem Befehl: git checkout feature-neu.
  3. Fügen Sie ein neues Feature hinzu oder ändern Sie vorhandene Inhalte in diesem Branch.
  4. Commiten Sie die Änderungen im neuen Branch mit dem Befehl: git commit -am "Add new feature".
  5. Wechseln Sie zurück zum Hauptbranch (z.B. main oder master) und mergen Sie die Änderungen aus dem Feature-Branch mit dem Befehl: git merge feature-neu.

Aufgabe 2: Umgang mit Merge-Konflikten

Ziel: Erfahren Sie, wie man Merge-Konflikte löst, die beim Zusammenführen von Änderungen aus verschiedenen Branches auftreten können.

  1. Erstellen Sie einen neuen Branch namens feature-update mit dem Befehl: git branch feature-update und wechseln Sie zu diesem Branch mit: git checkout feature-update.
  2. Öffnen Sie eine Datei (z.B. index.html) und fügen Sie einige Änderungen hinzu oder ändern Sie den bestehenden Inhalt.
  3. Commiten Sie Ihre Änderungen mit: git commit -am "Update index.html on feature branch".
  4. Wechseln Sie zurück zum Hauptbranch (z.B. main) und ändern Sie dieselbe Datei (index.html) an derselben Stelle anders als im feature-update Branch.
  5. Commiten Sie diese Änderungen auf dem Hauptbranch mit: git commit -am "Update index.html on main branch".
  6. Versuchen Sie nun, den feature-update Branch in den Hauptbranch zu mergen mit: git merge feature-update.
  7. Lösen Sie den aufgetretenen Konflikt manuell, indem Sie die Datei öffnen, die Konflikte überprüfen (gekennzeichnet durch <<<<<<<, =======, >>>>>>>) und eine endgültige Version des Inhalts auswählen.
  8. Nachdem Sie den Konflikt gelöst haben, schließen Sie den Merge-Vorgang ab mit: git add . gefolgt von git commit -m "Resolve merge conflict".

Aufgabe 3: Verwendung von Remote-Repositories

Ziel: Lernen Sie, wie Sie ein Remote-Repository auf einer Plattform wie GitHub oder GitLab einrichten und nutzen, um Ihre Änderungen zu teilen und mit anderen zu synchronisieren.

  1. Remote-Repository erstellen: Besuchen Sie eine Plattform wie GitHub oder GitLab und erstellen Sie ein neues Repository. Notieren Sie sich die URL des erstellten Repositories.
  2. Hinweis
    Beispiel: https://github.com/username/neues-repository.git
  3. Lokales Repository mit dem Remote-Repository verbinden: Öffnen Sie Ihr Terminal und navigieren Sie zum Verzeichnis Ihres lokalen GIT-Repositories (z.B. /var/www/isa#). Verknüpfen Sie Ihr lokales Repository mit dem Remote-Repository durch folgenden Befehl:
  4. Bash
    git remote add origin URL_des_Remote-Repository
  5. Änderungen zum Remote-Repository pushen: Verwenden Sie den folgenden Befehl, um Ihre lokalen Änderungen zum Remote-Repository zu pushen. Dieser Schritt "veröffentlicht" Ihre Arbeit, sodass sie für andere sichtbar und zugänglich wird.
  6. Bash
    git push -u origin main
  7. Änderungen von anderen Teammitgliedern pullen: Wenn Ihre Teammitglieder ebenfalls Änderungen am Projekt vorgenommen und diese gepusht haben, können Sie diese Änderungen in Ihr lokales Repository integrieren, indem Sie folgenden Befehl ausführen:
  8. Bash
    git pull origin main
  9. Weitere Zusammenarbeit: Arbeiten Sie weiter an Ihrem Projekt, machen Sie regelmäßig Commits und pushen Sie Ihre Updates. Achten Sie darauf, häufig zu pullen, um Konflikte zu minimieren und sicherzustellen, dass Ihr Projekt aktuell bleibt.