useless and overrated

2. April 2010 um 11.53 Uhr

Git: merge tracking branch

Flattr

Seit ich Git benutze, habe ich nach einer kurzen, einfachen Methode gesucht, einen branch auf den Stand seines remote branches zu bringen. Obwohl ich trotz intensiver Suche nichts dazu gefunden habe, ist es ganz einfach.

Angenommen, es gibt einen branch dev und den zugehörigen remote branch elsewhere/dev, dann sagt man, dass dev ein tracking branch für elsewhere/dev ist. Für diese Konstellation gibt git status bereitwillig folgende Auskunft, wenn ein branch dem anderen voraus ist:

$ git status
# On branch dev
# Your branch is behind 'elsewhere/dev' by 1 commit, and can be fast-forwarded.

Leider fehlen diese Angaben völlig, wenn die beiden branches den gleichen Stand haben:

$ git status
# On branch dev
nothing to commit (working directory clean)

Das ergibt zwei Probleme:

  1. Wie sehe ich schnell und einfach den zugehörigen remote branch, auch wenn die beiden branches den gleichen Stand haben?
  2. Wie kann ich den remote branch schnell in seinen tracking branch mergen, ohne dessen Name erneut eingeben zu müssen?

Ich hatte schließlich zwei Shell-Skripte geschrieben, die diese Funktionen bereitstellen.

Wie sich nun nach intensiver Studie der Man-Pages herausstellte, ist das unnötig und beiden Probleme lassen sich ganz einfach beheben:

  1. git branch -vv zeigt auch den remote branch mit an, falls einer existiert.
  2. git merge @{u} führt einen merge mit den remote branch durch.

Wie man git-rev-parse(1) entnehmen kann, gibt es den Zusatz @{upstream} oder kurz @{u} mit dem man sich auf den remote branch eines branches beziehen kann. Genau was ich gesucht habe.

Wenn das jetzt noch irgendwie einfacher zu finden gewesen wäre, hätte ich mir die Skripte sparen können.


von cpx.

Alle Rechte vorbehalten.

uselessness.de — Useless and overrated.

Erzeugt mit Jekyll am 17. August 2011.