Die Presse

Sophiadesigns Blog

Internes & PMs · Sophiadesigns Blog · In der Presse

How-to: Git-Tags vom entfernten Repository löschen

Ich benutze Tower als Git-Client. Wenn du Tower nicht kennst, solltest du dir die Software unbedingt angucken. Mit dem Slogan “The most powerful Git client for Mac” wirbt man auf der Webseite und nach einigen Monaten Nutzung kann ich das nur bestätigen. Außerdem kommt Tower aus Stuttgart, was man auf den ersten Blick sicher nicht erwartet hätte :) Hier der Link zur Tower-App.

Da ich aber nun Tower primär benutze um nicht die Konsole benutzen zu müssen um mit Git zu arbeiten, hatte ich letztens ein Problem Tags von unserem “zentralen” Repository (jaja, ich weiß, das widerspricht irgendwie der Git-Philosophie, aber Fakt ist doch nun mal, dass man eines hat) zu löschen. Mit Tower kann man die Tags nur im lokalen Repository löschen. Tower wiederum ist noch nicht fähig, dem entfernten Repository die lokale Löschung auch mitzuteilen. Eventuell wird das per Patch irgendwann ja nachgereicht.

Jedenfalls hat mich das bewegt, ein kleines How-to zu schreiben, weil ich mich letztlich dann doch mit der Konsole auseinander setzen musste (der zuständige Entwickler war auf Hochzeitsreise und ich wollte aufräumen!).

Tags per Konsole löschen

  1. Öffne die Konsole, d.h. die “Terminal”-App auf deinem Mac, indem du cmd+Leertaste drückst, in das Suchfenster “Terminal” eingibst und Enter drückst.
  2. Jetzt benutzt du den Befehl cd um in das entsprechende Verzeichnis zu wechseln, in dem das lokale Repository liegt. Bei mir sieht der Befehl so aus (beachte, dass du am Besten die englischen Bezeichnungen der Ordner verwendest. Die deutschen haben bei mir Probleme gemacht):

Zwischenruf

Ich gehe hier davon aus, dass du Git lokal schon installiert hast, dass auf dem entfernten Server dein SSH-Key hinterlegt ist, dass der entfernte Server läuft, dass tatsächlich ein lokales Repository angelegt ist und du schon den einen oder anderen Commit und Push zum entfernten Repository durchgeführt hast. Wenn dem nicht so ist, solltest du dich zuerst mit den Grundlagen vertraut machen, da es sich beim Verwalten von Tags eher um eine etwas fortgeschrittene Übung handelt.

  1. Lösche nun einen lokalen Tag, z.B. via Tower. Angenommen der lokale Tag heißt dev-rc-1.1.5.
  2. Nun möchten wir, dass aus dem lokalen Repository heraus der Befehl an das entfernte Repository gesendet wird, dass der Tag lokal gelöscht wurde und auch im entfernten Repository gelöscht werden soll. Dafür tippst du im Terminal, wobei user@server.domain durch deine entsprechenden Daten ersetzt wird:
git push ssh://user@server.domain/Projektname.git :dev-rc-1.1.5
  1. Und drücke Enter. Jetzt wird der entfernte Tag gelöscht.
Erklärung? → git push origin :tagname

Dazu eine Erklärung zum Aufbau des obigen Befehls. Es folgt die abstrakte Form des oben konkret geschriebenen Befehls:

git push location source-ref:destination-ref
  • git: leitet den Git-Befehl ein
  • push: weist Git an, etwas an einen bestimmten Ort zu schieben, z.B. das entfernte Repository
  • location: definiert den Ort, an den gepusht werden soll
  • source-ref: definiert, was gepusht werden soll, z.B. ein Tag
  • destination-ref: definiert, wie der Referenzpunkt am anderen Ende lauten soll

Daraus schließen wir ganz einfach: wenn vor dem Doppelpunkt nichts steht, d.h. nicht angegeben wird was gepusht werden soll, dann wird nichts gepusht. Und dieses “Nichts” überschreibt das, was am Ziel-Referenzpunkt (= destination-ref) gerade vorhanden ist und macht ebenfalls ein Nichts daraus. Et voilà, der entfernte Tag ist gelöscht.

tl;dr

git push ssh://user@server.domain/Projektname.git :tag-name


Von in Blog am 12. Januar 2013 mit den Schlagwörtern: , mit 0 Kommentaren »


Name (erforderlich)
e-Mail (erforderlich)
URL (no no-follow)
Kommentar (erforderlich)
XHTML: Diese HTML-Tags dürfen Sie verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>