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?
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.
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.
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 .
git Push --tags production
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
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.