wake-up-neo.com

Wie kann man ein Git-Tag mit einer Refspec in einen Zweig pushen?

Ich möchte zum Beispiel mein Tag 1.0.0 Auf meinen Remote-Zweig master pushen.

Ich mache jetzt folgendes:

git Push production +1.0.0:master

Ich möchte den Push erzwingen, weil mir nur der Code im 1.0.0 -Tag wird in den Zweig master im Remote-Repository verschoben.

Was mache ich falsch?

Update Nr. 1

Wenn ich einen SSH-Vorgang auf meinem Server durchführe, auf dem sich mein Git Repository befindet, und git branch -l Ausführe, wird auch der Zweig master nicht angezeigt.

Update Nr. 2

Nachdem ich git tag -l Aus dem entfernten Git-Repository heraus ausgeführt habe, sehe ich, dass master aufgelistet ist, was bedeutet, dass ich Folgendes ausgeführt habe:

git Push production 1.0.0:master

Es hat das Tag tatsächlich gepusht und ein Tag mit dem Namen erstelltmaster anstatt ein neuer Zweig.

Ich möchte im Grunde die Inhalte des Tags 1.0.0 In die master Zweig des entfernten Git-Repositorys.

216

Es ist wahrscheinlich scheitern, weil 1.0.0 ist ein kommentiertes Tag. Möglicherweise haben Sie die folgende Fehlermeldung gesehen:

fehler: Es wurde versucht, ein nicht festgeschriebenes Objekt in den Zweig refs/heads/master zu schreiben

Mit Anmerkungen versehene Tags haben einen eigenen Objekttyp, der auf das mit Tags versehene Festschreibungsobjekt verweist. Verzweigungen können nicht sinnvoll auf Tag-Objekte verweisen, sondern nur Objekte festschreiben. Sie müssen das mit Anmerkungen versehene Tag zurückziehen, um das Objekt festzuschreiben, und das stattdessen pushen.

git Push production +1.0.0^{commit}:master
git Push production +1.0.0~0:master          # shorthand

Es gibt eine andere Syntax, die auch in diesem Fall funktionieren würde, die jedoch etwas anderes bedeutet, wenn das Tag-Objekt auf etwas anderes als ein Commit verweist (oder ein Tag-Objekt, das auf ein Commit verweist). .

git Push production +1.0.0^{}:master

Diese Syntax zum Entfernen von Tags wird in git-rev-parse (1) unter Angeben von Revisionen beschrieben .

58
Chris Johnsen
git Push --tags production
469
bstpierre

Ich erstelle das Tag so und schiebe es dann zu GitHub:

git tag -a v1.1 -m "Version 1.1 is waiting for review"
git Push --tags

Counting objects: 1, done.
Writing objects: 100% (1/1), 180 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To [email protected]:neoneye/triangle_draw.git
 * [new tag]         v1.1 -> v1.1
61
neoneye

Zum Verschieben eines einzelnen Tags: git Push <reponame> <tagname>

Zum Beispiel, git Push production 1.0.0. Tags sind nicht an Zweige gebunden, sondern an Commits.

Wenn Sie den Inhalt des Tags im Hauptzweig haben möchten, tun Sie dies lokal auf Ihrem Computer. Ich würde davon ausgehen, dass Sie sich in Ihrer lokalen Master-Niederlassung weiterentwickelt haben. Dann nur noch ein git Push Origin master sollte ausreichen.

10
koppor