Intelligente Lösungen
in neuer Dimension

Git: Merge ohne Merge

Manchmal arbeite ich an zwei Git-Zweigen parallel, beispielsweise an “main” und “develop”. Gelegentlich kommt es dann vor, dass eine bestimmte Änderung an “develop” auch in “main” gebraucht wird – bspw. eine wichtige Fehlerkorrektur. Diese einzelne Änderung übernehme ich mit git cherry-pick ... von “develop” nach “main”.

Leider läuft die Übernahme machmal nicht ganz rund: Ich muß gewisse Anpassungen für “main” vornehmen, damit die Korrektur passt. Danach möchte ich vermerken, dass genau diese Änderung später niemals von “main” nach “develop” übertragen werden muß.

Damit das klappt, muß ich etwas sorgfältig vorgehen:

  1. Sicherstellen, dass “main” vor der Änderung mit “develop” abgeglichen ist! (git checkout develop; git merge main)
  2. Übernehmen der Änderung von “develop” nach “main”! (git checkout main; git cherry-pick ...)
  3. Konflikte in “main” lösen
  4. Sicherstellen, dass “main” nun den gewünschten Stand hat (also: Korrektur aus “develop” ist richtig übertragen)
  5. “develop” aktualisieren und die letzten Änderungen auf “main” als bereits übernommen markieren:
    • git checkout develop
    • git merge main -s ours --no-ff --no-commit
    • git commit -m "Merged main"

Links

Änderungen

  • 2021-11-17 – Erste Version