Aktualisierung August 2020
Wie ursprünglich erwähnt in este Antwort von SoBeRich und in meinem eigene Antwort ab Git 2.4.x
git push --atomic origin <branch name> <tag>
(Anmerkung: dies ist eigentlich funktioniert mit HTTPS nur mit Git 2.24 )
Aktualisierung Mai 2015
Ab dem git 2.4.1 können Sie tun
git config --global push.followTags true
Wenn auf true gesetzt, ist die Option --follow-tags standardmäßig aktiviert.
Sie können diese Konfiguration zum Zeitpunkt des Push-Vorgangs außer Kraft setzen, indem Sie --no-follow-tags angeben.
Wie bereits in dieses Thema von Matt Rogers, der Wes Hurd antwortet :
--follow-tags
verschiebt nur kommentierte Tags .
git tag -a -m "I'm an annotation" <tagname>
Das würde geschoben werden (im Gegensatz zu git tag <tagname>
ein leichtes Tag, das nicht gepusht werden würde, da ich hier erwähnt )
Aktualisierung April 2013
Seit git 1.8.3 (22. April 2013) , Sie müssen nicht mehr 2 Befehle ausführen, um Zweige zu verschieben und dann Tags zu verschieben :
Die neue " --follow-tags
Die Option " sagt " git push
" zu beim Auslagern von Zweigen relevante kommentierte Tags einfügen .
Sie können nun versuchen, beim Pushen neuer Übertragungen:
git push --follow-tags
Das wird nicht dazu führen, dass alle die lokalen Tags, sondern nur die, auf die in den Commits verwiesen wird, die mit dem git push
.
Mit Git 2.4.1+ (Q2 2015) wird die Option push.followTags
: siehe " Wie macht man " git push
"Tags innerhalb einer Verzweigung einschließen? ".
Originalantwort, September 2010
Die nukleare Option wäre git push --mirror
was dazu führt, dass alle Schiedsrichter unter refs/
.
Sie können auch nur ein Tag mit Ihrem aktuellen Branch-Commit pushen:
git push origin : v1.0.0
Sie können die --tags
Option mit einem refspec wie:
git push origin --tags :
(seit --tags
bedeutet: Alle Schirme unter refs/tags
geschoben werden, zusätzlich zu den in der Befehlszeile explizit aufgeführten refspecs )
Sie haben auch diesen Eintrag " Verschieben von Zweigen und Tags mit einem einzigen "git push"-Aufruf "
Ein praktischer Tipp wurde soeben auf der Website Git-Mailingliste von Zoltán Füzesi:
Ich benutze .git/config
um dieses Problem zu lösen:
[remote "origin"]
url = ...
fetch = +refs/heads/*:refs/remotes/origin/*
push = +refs/heads/*
push = +refs/tags/*
Mit diesen zusätzlichen Zeilen git push origin
werden alle Ihre Zweige und Tags hochgeladen. Wenn Sie nur einige von ihnen hochladen möchten, können Sie sie aufzählen.
Ich habe es selbst noch nicht ausprobiert, aber es sieht so aus, als ob es nützlich sein könnte, bis Git Push eine andere Möglichkeit zum gleichzeitigen Verschieben von Zweigen und Tags hinzugefügt wird.
Andererseits macht es mir nichts aus, zu tippen:
$ git push && git push --tags
Vorsicht als kommentiert von Aseem Kishore
push = +refs/heads/*
se schiebt alle Ihre Zweige nach vorne .
Das ist mir gerade aufgefallen, also zu Ihrer Information.
René Scheibe fügt hinzu. dieser interessante Kommentar :
El --follow-tags
Parameter ist irreführend, da nur Tags unter .git/refs/tags
berücksichtigt werden.
Wenn git gc
ausgeführt wird, werden die Tags von .git/refs/tags
a .git/packed-refs
. Danach git push --follow-tags ...
funktioniert nicht mehr wie erwartet.
9 Stimmen
Was ist Ihr Problem mit
git push && git push --tags
?31 Stimmen
Nichts Besonderes, es ist nur langsamer, da die Verbindung zweimal aufgebaut werden muss.
23 Stimmen
Siehe meine aktualisierte Antwort unten: es gibt eine neue
--follow-tags
Option seit Git 1.8.379 Stimmen
Ein weiterer Grund, dies nicht separat zu tun, ist die Vermeidung von zwei CI-Builds für denselben Commit, wenn Sie diese Art von Automatisierung bereits eingerichtet haben.
0 Stimmen
También
--tags
unterscheidet nicht zwischen leichtgewichtigen und kommentierten Tags Quelle14 Stimmen
@fuz
git push && git push --tags
die CI-Pipeline zweimal auslöst, obwohl dies vor 10 Jahren noch irrelevant gewesen sein mag.5 Stimmen
Wenn es Ihnen nur darum geht, dass CICD nicht zweimal ausgelöst wird, versuchen Sie
git push -o ci.skip && git push --tags
1 Stimmen
@user1160006 - Ich hatte noch nie etwas von Push-Optionen gehört. Das ist toll, aber ich glaube, Ihr Befehl funktioniert nur, wenn Sie Gitlab verwenden?
0 Stimmen
@user1160006 Ich stimme dafür, wenn du es zu einer richtigen Antwort machst. Es ist eine Art Nischenantwort, aber es gibt eine Menge Leute, die Gitlab benutzen.