Wie bewege ich Änderungen zwischen Branches in Git?

Git ist ein leistungsstarkes Versionskontrollsystem, das Entwicklern hilft, Änderungen an Code zu verfolgen und zusammenzuführen. Oft kommt es vor, dass Änderungen, die in einem Branch vorgenommen wurden, in einen anderen Branch übertragen oder verschoben werden müssen. In diesem Artikel zeigen wir Ihnen, wie Sie Änderungen zwischen Branches in Git bewegen, mit verschiedenen Techniken wie git cherry-pick, git merge und git rebase.

Was sind Git-Branches?

In Git ist ein Branch eine separate Linie der Entwicklung. Dies ermöglicht es Entwicklern, neue Features zu entwickeln, ohne den Hauptcode zu stören. Normalerweise arbeiten Sie auf einem Branch, und wenn die Arbeit abgeschlossen ist, integrieren Sie die Änderungen in einen anderen Branch (z.B. in den main-Branch oder master). Das Verschieben von Änderungen zwischen diesen Branches ist ein wichtiger Bestandteil des Arbeitsablaufs.

Methoden, um Änderungen zwischen Branches zu verschieben

Es gibt mehrere Methoden, um Änderungen zwischen Git-Branches zu verschieben, und jede Methode hat ihre eigenen Anwendungsfälle. Die gängigsten Methoden sind:

  • git cherry-pick
  • git merge
  • git rebase

1. Änderungen mit git cherry-pick zwischen Branches bewegen

Der git cherry-pick Befehl wird verwendet, um einen oder mehrere Commits aus einem Branch zu einem anderen zu kopieren. Dies ist besonders nützlich, wenn Sie nur bestimmte Änderungen aus einem Branch übernehmen möchten, ohne den gesamten Branch zusammenzuführen.

So verwenden Sie git cherry-pick:

git checkout 
git cherry-pick 

Hierbei wird der Commit mit der angegebenen commit-hash aus dem aktuellen Branch in den ausgewählten Branch übernommen.

Beispiel:

git checkout feature-branch
git cherry-pick a1b2c3d4

In diesem Beispiel wechseln Sie zu dem Branch feature-branch und übernehmen den Commit mit der ID a1b2c3d4 in diesen Branch.

Vorteile von git cherry-pick:

  • Erlaubt das Übernehmen spezifischer Änderungen ohne den gesamten Branch zu mergen.
  • Ideal, wenn nur bestimmte Commits aus einem anderen Branch benötigt werden.

Nachteil:

  • Cherry-picking kann zu Konflikten führen, insbesondere bei Änderungen an denselben Codezeilen in verschiedenen Branches.

2. Änderungen mit git merge zwischen Branches verschieben

Der Befehl git merge wird verwendet, um die Änderungen von einem Branch in einen anderen zu integrieren. Dies ist die gängigste Methode, um Änderungen von einem Feature-Branch in den Hauptbranch zu übertragen.

So verwenden Sie git merge:

git checkout 
git merge 

Hierbei wird der source-branch in den target-branch gemerged.

Beispiel:

git checkout main
git merge feature-branch

In diesem Beispiel wechseln Sie zum main-Branch und integrieren die Änderungen aus dem feature-branch in den main-Branch.

Vorteile von git merge:

  • Einfacher und schneller Prozess, um Änderungen von einem Branch in einen anderen zu integrieren.
  • Erhält die Historie beider Branches und erstellt einen Merge-Commit.

Nachteil:

  • Kann zu Konflikten führen, wenn beide Branches Änderungen an denselben Codezeilen vorgenommen haben.

3. Änderungen mit git rebase verschieben

Der git rebase Befehl wird verwendet, um die Basis eines Branches auf einen anderen Branch zu verschieben. Im Gegensatz zum Merging wird beim Rebase die Historie des Branches neu geschrieben, indem die Commits des Ziel-Branches vor die Commits des Quell-Branches eingefügt werden. Dies führt zu einer sauberen, linearen Historie.

So verwenden Sie git rebase:

git checkout 
git rebase 

In diesem Fall wird der feature-branch auf den target-branch rebased.

Beispiel:

git checkout feature-branch
git rebase main

In diesem Beispiel wird der feature-branch auf den main-Branch rebased, sodass der feature-branch alle Änderungen aus main enthält, als ob sie in einer linearen Reihenfolge gemacht worden wären.

Vorteile von git rebase:

  • Erstellt eine saubere, lineare Historie ohne Merge-Commits.
  • Erlaubt es, Änderungen zu verschieben, ohne die Commit-Historie unnötig zu verkomplizieren.

Nachteil:

  • Rebase verändert die Commit-Historie, was bei Zusammenarbeit zu Problemen führen kann, wenn nicht korrekt verwendet.

Wann sollte man git merge, git rebase oder git cherry-pick verwenden?

Die Wahl der Methode hängt vom spezifischen Anwendungsfall ab:

  • Verwenden Sie git merge, wenn Sie Änderungen aus einem Branch vollständig in einen anderen integrieren möchten und die Commit-Historie beibehalten wollen.
  • Verwenden Sie git rebase, wenn Sie eine saubere, lineare Historie bevorzugen und keine Merge-Commits möchten.
  • Verwenden Sie git cherry-pick, wenn Sie nur bestimmte Commits aus einem anderen Branch übernehmen möchten.

Fazit

Das Verschieben von Änderungen zwischen Git-Branches ist eine wichtige Fähigkeit, die jedem Entwickler vertraut sein sollte. Abhängig von Ihrem Workflow und den Anforderungen an die Historie können Sie entweder git merge, git rebase oder git cherry-pick verwenden. Jeder dieser Befehle hat seine Vor- und Nachteile, und es ist wichtig, die richtige Methode für die jeweilige Situation zu wählen.

Verfasst von: Ihr Name