Git Merge vereinfacht: Branches wie ein Profi zusammenführen

Das Zusammenführen von Branches in Git kann manchmal eine anspruchsvolle Aufgabe sein, aber der Befehl git merge vereinfacht den Prozess erheblich. In diesem Tutorial lernen Sie die Grundlagen des Zusammenführens von Branches mit git merge, kombiniert mit GitHub, einem führenden Projektmanagement-Tool.

Beginnen wir diese Reise in die Welt von Git und GitHub und konzentrieren uns auf den leistungsstarken Befehl git merge.

Voraussetzungen für das Meistern von Git Merge

Bevor Sie sich in die Details von git merge vertiefen, stellen Sie sicher, dass Sie die folgende Einrichtung haben:

  • Git (Version 2.25.1 in diesem Tutorial verwendet) – Herunterladen von der offiziellen Git-Website.
  • A GitHub account – Sign up at GitHub.
  • Ein Ubuntu-Rechner (hier wird Ubuntu 20.04 verwendet, aber jedes Betriebssystem mit Git ist ausreichend).

Initialisieren eines Projekts für Git Merge

Um git merge effektiv zu nutzen, benötigen Sie zunächst ein Git-Projekt. Lassen Sie uns ein Demo-Projekt für die Übung einrichten.

1. Beginnen Sie damit, ein neues Verzeichnis mit dem Namen ~/git-demo zu erstellen und in dieses zu wechseln:

mkdir git-demo && cd git-demo

2. Erstellen Sie eine index.html-Datei im Verzeichnis ~/git-demo mit dem folgenden Inhalt. Diese einfache HTML-Datei zeigt eine Nachricht über den Einstieg mit git merge.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Demo</title>
</head>
<body>
    <h4>Let's get started with git merge</h4>
</body>
</html>

3. Initialisieren Sie ein neues Git-Repository in Ihrem Projektverzeichnis:

Der Befehl git init wird verwendet, um ein bestehendes, nicht versioniertes Projekt in ein Git-Repository zu konvertieren oder ein neues Projekt mit Git zu starten.

git init
Initializing a Git repository for git merge

4. Bestätige die Erstellung des .git-Ordners in deinem Projektverzeichnis. In diesem Ordner verfolgt Git Änderungen:

ls -la
Verifying the existence of the GIT repository in the directory.

5. Führe den Befehl git add aus, um deine Änderungen im Projekt zu stagen. Durch das Stagen der Datei index.html bereitest du sie für den nächsten Commit im Git-Workflow vor.

git add index.html

6. Verwende git status, um zu bestätigen, dass deine Datei korrekt gestaged ist. Dieser Befehl bietet eine Momentaufnahme des aktuellen Zustands deines Arbeitsverzeichnisses.

git status
Confirming the staging of changes for git merge.

7. Commite dann deine Änderungen mit git commit. Dieser Befehl speichert deine gestagten Änderungen im lokalen Repository und markiert einen wichtigen Schritt in deiner Versionsgeschichte.

git commit -m "initial commit"
Executing the initial commit in preparation for git merge.

Setze deine Git-Identität mit: git config --global user.email "[email protected]" und git config --global user.name "Dein Name", wenn du Git zum ersten Mal verwendest.

8. Überprüfe deine Commit-Historie mit git log. Dieser Befehl hilft dir, Änderungen nachzuverfolgen und ist entscheidend, wenn du dich auf einen git merge vorbereitest.

git log
Checking commit history before performing git merge.

9. Bestätige die Existenz von Branches in deinem Repository mit git branch. Dieser Schritt ist wichtig, bevor du einen git merge durchführst.

Hinweis: Der Standard-Branch heißt in neueren Git-Versionen ‚main‘ und ersetzt ‚master‘.

git branch
Listing all branches in preparation for git merge.

Erstellen eines Branches für den Git Merge

Mit Ihrer initialen Git-Einrichtung abgeschlossen und dem ersten Commit erstellt, ist es an der Zeit, einen neuen Branch zu erstellen. Dieser Branch wird verwendet, um den git merge-Prozess effektiv zu demonstrieren.

1. Aktualisieren Sie die Datei index.html mit neuem Inhalt, um Änderungen in Ihrem Branch zu demonstrieren. Diese Version enthält Benutzereingabefelder, die auf eine Demonstration von git merge vorbereitet sind.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Demo</title>
</head>
<body>
    <h4>Enhancing Git Merge Skills</h4>
    <form action="">
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
    </form>
</body>
</html>

2. Überprüfen Sie den Status Ihres Repositorys mit git status, um die Änderungen in index.html anzuzeigen. Es sollte angezeigt werden, dass die Datei geändert und nicht gebunden ist und somit für die nächsten Schritte im git merge-Prozess bereit ist.

Inspecting repository changes for git merge.

3. Erstellen Sie einen neuen Branch mit dem Namen „form“ mit git checkout -b form. Dieser Befehl erstellt nicht nur den neuen Branch, sondern wechselt auch Ihren Arbeitsbranch zu „form“, was für die Implementierung von git merge wesentlich ist.

git checkout -b form
Creating a new branch for git merge.

4. Bestätigen Sie die Erstellung des neuen Branches, indem Sie git branch ausführen. Sie sollten nun sowohl die „form“ als auch die „master“-Branches sehen, wobei „form“ als aktiver Branch durch ein Sternchen (*) angezeigt wird.

git branch
Confirming the active ‘form’ branch for git merge.

5. Stellen Sie Ihre Änderungen im form-Branch bereit und committen Sie sie. Diese Aktion stellt sicher, dass der form-Branch die kürzlich vorgenommenen Updates an der index.html-Datei widerspiegelt und somit die Grundlage für ein effektives git merge bildet.

## Die aktualisierte Datei inszenieren
git add index.html

## Die neuen Änderungen committen
git commit -m "Added user input fields to form"
Committing updated index.html to the ‘form’ branch for git merge.

Merging von lokalen Branches mit Git Merge

Jetzt, da Sie verschiedene Branches in Ihrem GitHub-Repository haben, ist der nächste Schritt, sie zu mergen. Dieser Abschnitt konzentriert sich auf das Zusammenführen von Branches lokal unter Verwendung des git merge-Befehls, einer grundlegenden Git-Operation.

1. Um den Merge zu beginnen, wechseln Sie zum master-Branch, der die Updates aus dem form-Branch erhalten wird:

git checkout master

2. Sobald Sie sich auf dem master-Branch befinden, führen Sie git merge form aus, um die Änderungen aus dem form-Branch in master zu kombinieren. Dies ist ein entscheidender Schritt im git merge-Prozess.

git merge form
Successfully merging branches using git merge.

3. Bestätigen Sie den Merge, indem Sie sicherstellen, dass Sie sich auf dem master-Branch befinden und überprüfen, ob der Inhalt von index.html aktualisiert wurde.

# Aktuellen Branch bestätigen
git branch
# Überprüfen des gemergten Inhalts
cat index.html
Reviewing index.html content post git merge.

Vereinfachung mit Git Squash

Squashen in Git ist eine Technik, um die Commit-Historie aufzuräumen. Wenn Sie mehrere Commit-Nachrichten haben, die einzeln nicht benötigt werden, ermöglicht das Squashen, diese zu einem einzigen, umfassenden Commit zusammenzuführen. Diese Praxis ist besonders nützlich, wenn Sie sich auf einen git merge vorbereiten.

Lassen Sie uns den Squash-Prozess erkunden, indem wir weitere Änderungen an der index.html-Datei auf dem form-Branch vornehmen und diese dann squashen.

1. Wechseln Sie zurück zum form-Zweig, um weitere Änderungen vorzunehmen:

git checkout form

2. Ändern Sie die index.html, indem Sie einen Formularkopf hinzufügen. Dieser Schritt wird eine Änderung erzeugen, die wir später beim Zusammenführen (merge) zusammendrücken werden:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h4>Mastering Git Merge with Form Updates</h4>
    <form action="">
      <h4>Account Details</h4>
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
      <button>Submit</button>
    </form>
</body>
</html>

3. Erfassen und committen Sie die Änderungen mit einer klaren Nachricht, die die Aktualisierung beschreibt:

git add index.html
git commit -m "Enhanced form with a header for git merge"
Staging and committing changes for squashing in git merge.

4. Verbessern Sie die index.html im form-Zweig, indem Sie ein neues Eingabefeld hinzufügen. Diese Änderung ist Teil der Vorbereitung auf einen effektiven git merge.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Example</title>
</head>
<body>
    <h4>Practicing Git Merge</h4>
    <form action="">
      <h4>Enter account details</h4>
      <input type="text" name="fullname" placeholder="Full Name" />
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
      <button>Submit</button>
    </form>
</body>
</html>

5. Erfassen und committen Sie diese Änderungen mit einer deutlichen Nachricht, um sicherzustellen, dass jeder Schritt Ihrer Arbeit klar dokumentiert ist für den bevorstehenden git merge.

git add index.html
git commit -m "Enhanced form with an additional input field"
Adding another input field to index.html for git merge.

6. Fügen Sie als nächstes ein Absatz-Element unter das Formular in index.html ein und modifizieren Sie die Datei weiter zur Vorbereitung auf einen git merge.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Practice</title>
</head>
<body>
    <h4>Let's get started with git merge</h4>
    <form action="">
      <h4>Enter account details</h4>
      <input type="text" name="fullname" placeholder="Full Name" />
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
      <button>Submit</button>
    </form>
    <p>Already a user?</p>
</body>
</html>

7. Erfassen und committen Sie erneut die Änderungen, und verwenden Sie eine Nachricht, die das Wesentliche dieses Updates einfängt, was für den git merge-Prozess entscheidend ist.

git add index.html
git commit -m "Added user status paragraph to form"
Further modifying index.html for git merge.

8. Verwenden Sie git rebase im interaktiven Modus, um Ihre letzten Commits anzuzeigen und zu bearbeiten. Dieser Schritt ist wesentlich im Prozess des Zusammenfassens von Commits für einen sauberen git merge.

git rebase -i HEAD~3

9. Im interaktiven Modus wählen Sie, den ersten Commit zu reworden und die nachfolgenden zu squashen. Diese Aktion konsolidiert Ihren Commit-Verlauf und macht Ihren git merge sauberer und organisierter.

Preparing commits for squashing in git merge.

10. Nach dem Umformulieren und Speichern aktualisieren Sie die zusammengefasste Commit-Nachricht, um die kumulierten Änderungen widerzuspiegeln. Dieser Schritt finalisiert den Prozess des Zusammenpressens (squashing), der Sie für einen reibungslosen git merge vorbereitet.

Finalizing the commit message for git merge.

Bestätigen Sie den Erfolg Ihrer Zusammenführungsoperation, die ein integraler Bestandteil des Prozesses git merge ist, wenn mehrere Commit-Nachrichten verarbeitet werden.

Successful git squash operation.

Für gleichzeitiges Zusammenführen und Zusammenfassen verwenden Sie git merge --squash. Diese Technik fusioniert und komprimiert den Formular-Zweig in den Master-Zweig und kombiniert dabei effizient die Commits.

git merge --squash form

Die Ausführung des Befehls git merge --squash kombiniert die Änderungen aus dem Formular-Zweig in den Master-Zweig und verdichtet dabei alle Commits zu einem einzigen. Dieser Ansatz ist Teil effektiver git merge-Strategien.

Executing git merge with squash option.

Implementierung von Fast-Forward in Git Merge

Für eine optimierte Commit-Historie ist das Vorspulen eine ideale Methode, insbesondere für kleinere Updates oder Fehlerkorrekturen. Es ermöglicht das Zusammenführen von Zweigen ohne zusätzliche Zusammenführungs-Commits und gewährleistet eine saubere und lineare Historie, die für effiziente git merge-Prozesse entscheidend ist.

Das Vorspulen erfolgt, wenn es keine Abweichungen im Ausgangszweig gibt, normalerweise dem Master, was eine nahtlose Integration der Historien und Zeigeraktualisierungen ermöglicht.

1. Wechseln Sie zum Formular-Zweig, um den Vorspulprozess zu starten:

git checkout form

2. Erstellen und aktualisieren Sie eine JavaScript-Datei, wie z. B. index.js, im Formular-Zweig, indem Sie die Änderungen in den Staging-Bereich überführen und committen:

git add index.js
git commit -m "Added JavaScript functionality"

3. Schließlich fusionieren Sie den Formular-Zweig in den Master unter Verwendung eines Vorspulansatzes. Dieser Schritt bringt den Master-Zweig auf den neuesten Stand der Änderungen aus dem Formular-Zweig und erzeugt einen reibungslosen, linearen git merge-Pfad.

git checkout master
git merge form
Performing a fast-forward merge in Git.

Zusammenfassung

Dieses Tutorial hat Sie durch verschiedene Techniken geführt, um Branches mit `git merge` zu kombinieren. Von Commit-Squashing bis hin zum Fast-Forwarding verbessern diese Methoden Ihre Fähigkeit, Projekte gemeinsam in Git zu verwalten.

Nun, ausgestattet mit diesen Fähigkeiten, sollten Sie in Betracht ziehen, zu kollaborativen Projekten auf GitHub beizutragen und Ihr Wissen über `git merge` in realen Szenarien anzuwenden.

Source:
https://adamtheautomator.com/git-merge/