Top Menu

Jump to content
Home
    • Projects
    • Work packages
    • News
    • Getting started
    • Introduction video
      Welcome to OpenProject
      Get a quick overview of project management and team collaboration with OpenProject. You can restart this video from the help menu.

    • Help and support
    • Upgrade to Enterprise edition
    • User guides
    • Videos
    • Shortcuts
    • Community forum
    • Professional support

    • Additional resources
    • Data privacy and security policy
    • Digital accessibility (DE)
    • OpenProject website
    • Security alerts / Newsletter
    • OpenProject blog
    • Release notes
    • Report a bug
    • Development roadmap
    • Add and edit translations
    • API documentation
  • Sign in
      Create a new account
      Forgot your password?

Side Menu

  • Overview
  • Wiki
    • Table of contents
      • Expanded. Click to collapseCollapsed. Click to showGit
        • Hierarchy leaf00) Git einrichten
        • Hierarchy leaf01) Repository clonen
        • Hierarchy leaf02) User einrichten
        • Hierarchy leaf03) Erster commit
        • Hierarchy leaf04) Ein neuer Branch
        • Hierarchy leaf05) Änderungen vom Server pullen
        • Hierarchy leaf06) Unterschiede erkennen
        • Hierarchy leaf07) Commit rückgängig machen
        • Hierarchy leaf08) Mergetool einrichten
        • Expanded. Click to collapseCollapsed. Click to show09) Gemeinsam arbeiten mit git
          • Hierarchy leafMerge
          • Hierarchy leafRebase
        • Hierarchy leafCheetsheet
      • Hierarchy leafLernvideo
You are here:
  • Git
  • 09) Gemeinsam arbeiten mit git
  • Rebase

Content

Rebase

  • More
    • Print
    • Table of contents

Rebase verwenden wir nur, wenn wir ALLEINE auf unserem Branch arbeiten. Rebase modifierziert alle Commits, das heißt sollte jemand anderst deinen privaten Branch verwenden, so hat diese Person nun eine ganz andere git History als du.

Der Vorteil von Rebase gegenüber Merge ist eine geradliniege nachvollziehbare git history.

Master aktualisieren und davon abzweigen

  1. Wenn du mit einem neuen Ticket beginnst, wechsle zuerst in den master Branch und hole alle Änderungen, mit git pull origin master.
  2. Soll für das neue Ticket ein eigener branch erstellt werden, so erstelle diesen mit git checkout -b task_123. Arbeitest du immer nur auf einem eigenen Branch für alle Tickets, so erstelle ebenfalls diesen.

Änderungen machen

Erstelle nun die Änderungen auf deinem privaten Branch.

  1. git add irgendwas
  2. git commit
  3. git push origin branchname
  4. usw.

Zurück damit in den Master

Willst du deine Änderungen nun anderen zur Verfügung stellen, so müssen diese auf den master Branch transferiert werden. Wie geht das?

Folgend werden wir nur eine gebräuchliche Methode kennen lernen, zuerst den master rebasen, dann privaten branch in master mergen:

  1. Bevor die Änderungen in den Master gehen, müssen wir sicherstellen dass dieser auch aktuell ist, wechsle dazu in den master Branch, pulle dann die Änderungen.
  2. Wechsle zurück in deinen privaten Branch
  3. Gib nun git rebase master ein. Rebase vergleicht in diesem Fall deinen privaten Branch mit dem master Branch. Alle commits die auf dem master gemacht wurden, seit du von diesem abgezweigt hast, werden in deinem eigenen Branch ganz unten eingefügt. Die folgende Grafik, sollte das recht gut darstellen. Dein eigener Branch wäre im Bild der Feature Branch.

https://de.atlassian.com/git/tutorials/rewriting-history/git-rebase

  1. Beim rebasen können Konflikte auftreten. Beachte hier die Ausgabe von git.
  2. Sind keine Konflikte aufgetreten. So können Wir zum nächsten Punkt weiter, ansonsten, gehts hier weiter.
  3. Zum Mergen von Dateien, gib git mergetool ein.
  4. Es öffnet sich Meld und nun muss die linke und die rechte Seite in der mitte zusammengeführt werden.
  5. Wird Meld geschlossen, so gilt die Datei als gemerged.
  6. Sind alle Mergekonflikte gelöst, gib git rebase --continue ein. Treten weitere Konflikte auf, das ist theoretisch möglich für jeden Commit der im privaten Branch gemacht wurde, so gehe wieder zurück zu Schritt 3)
  7. Soll ein rebase abgebrochen werden, so gib git rebase --abort ein, und beginne von vorn.
  8. Sind alle Konflikte gelöst, so können die Änderungen auch im privaten Branch, wenn dieser noch benötigt wird gepushed werden. Hierzu wird aber ein git push origin branchname -f benötigt. Da der lokale private Branch, nichtmehr mit dem server Branch zusammenstimmt. Die Option -f sollte nie auf dem master Branch angewendet werden.

Nun wirklich zurück damit in den Master

  1. Willst du deinen private Branch nun pushen so benötigst du, da die Commits umgeschrieben wurden ein git push origin branchname -f
  2. Wechsle zurück in den master Branch.
  3. Gib git merge branchname ein.
  4. git push origin master
  5. Fertig (Im besten Fall)
Loading...