Ich möchte beispielsweise das Drücken meines Tags 1.0.0
auf meinen Remote- master
Zweig erzwingen .
Ich mache jetzt folgendes:
git push production +1.0.0:master
Ich möchte den Push erzwingen , da mir nur wichtig ist, dass der Code im1.0.0
Tag in denmaster
Zweig des Remote-Repositorys verschoben wird.
Was mache ich falsch?
Update Nr. 1
Wenn ich SSH auf meinem Server verwende, auf dem sich mein Git- Repository befindet, und ausgeführt werde git branch -l
, wird der master
Zweig auch nicht aufgelistet.
Update Nr. 2
Nachdem git tag -l
ich aus dem Remote-Git-Repository ausgeführt habe, master
wird diese aufgelistet. Dies bedeutet, dass ich Folgendes ausgeführt habe:
git push production 1.0.0:master
Es hat das Tag tatsächlich verschoben und ein Tag mit dem Namen master
anstelle eines neuen Zweigs erstellt .
Ich möchte den Inhalt des Tags grundsätzlich 1.0.0
in den master
Zweig des Remote-Git-Repositorys verschieben.
Antworten:
Es schlägt wahrscheinlich fehl, weil
1.0.0
es sich um ein mit Anmerkungen versehenes Tag handelt. Möglicherweise haben Sie die folgende Fehlermeldung gesehen:Mit Anmerkungen versehene Tags haben einen eigenen Objekttyp, der auf das mit Tags versehene Festschreibungsobjekt verweist. Zweige können nicht sinnvoll auf Tag-Objekte verweisen, sondern nur Objekte festschreiben. Sie müssen das mit Anmerkungen versehene Tag zurückschälen, um das Objekt festzuschreiben, und es stattdessen verschieben.
Es gibt eine andere Syntax, die auch in diesem Fall funktionieren würde, aber sie bedeutet etwas anderes, wenn das Tag-Objekt auf etwas anderes als ein Commit zeigt (oder auf ein Tag-Objekt, das auf ein Commit zeigt (ein Tag-Objekt, das auf ein… zeigt). .
Diese Tag-Peeling-Syntaxen werden in git-rev-parse (1) unter Spezifizieren von Revisionen beschrieben .
quelle
git push rep +tag:master
wird anstelle eines Zweigs ein Tag mit dem Namen master erstellt .git push rep +tag~0:master
(erneut, wenn der Master nicht als Zweig oder Tag vorhanden ist) schlägt mit "Fehler: Pushing nicht zum nicht qualifizierten Ziel" fehl. Der Befehl, der getan hätte , was man (vor jeder wollte Master Zweig / Tag existierte) istgit push rep +tag~0:refs/heads/master
(refs/heads/
ist der Namespace , unter denen Zweige gespeichert werden).~{commit}
Syntax ist wörtlich (dh immer diese neun Zeichen); Das Wortcommit
ist hier kein Platzhalter.quelle
git push production :1.0.0
.git push production :refs/tags/1.0.0
um nur das Tag zu löschenIch erstelle das Tag so und schiebe es dann an GitHub:
quelle
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 Hauptniederlassung weiterentwickelt haben. Dann sollte nur ein
git push origin master
ausreichen.quelle