Gitを使用してリモートリポジトリにタグをプッシュするにはどうすればよいですか?


2218

ラップトップにリモートGitリポジトリのクローンを作成し、タグを追加したいので、実行しました

git tag mytag master

git tagノートパソコンで実行すると、タグmytagが表示されます。次に、これをリモートリポジトリにプッシュして、すべてのクライアントにこのタグを付けたいので、実行しgit pushてもメッセージが表示されます。

最新のすべて

デスクトップに移動して実行するgit pullと、git tagタグが表示されません。

また、プロジェクトのファイルを少し変更してから、サーバーにプッシュしようとしました。その後、サーバーからデスクトップコンピューターに変更をプルできますが、デスクトップコンピューターで実行git tagしてもタグはありません。

すべてのクライアントコンピューターがタグを表示できるように、リモートリポジトリにタグをプッシュする方法を教えてください。

回答:


1092

git push --follow-tags

これは、Git 1.8.3で導入された正気なオプションです。

git push --follow-tags

両方のコミットと両方のタグのみをプッシュします。

  • 注釈付き
  • プッシュされたコミットから到達可能(祖先)

これは正気です:

これらの理由により、--tags回避する必要があります。

Git 2.4にpush.followTags、デフォルトでそのフラグをオンにするオプションが追加されています。

git config --global push.followTags true

16
このおかげで、コンテンツをプッシュしてからタグを個別にプッシュする必要があるのに対し、すべてを一度にプッシュする方が理にかなっています。
シェーン

1
それが「注釈付き」と「プッシュされたコミットから到達可能」とのAND関係であるかどうかは、私にはすぐにはわかりませんでした。注釈が付けられていてもいなくても、到達可能なすべてのタグがプッシュされることを期待していました。ORでないことを確認するために編集しますか?
Gauthier 2015年

soo、これを行ったとき、私はbitbucketに戻ります。コマンドラインから表示できる以外に、タグリストを表示する必要がありますか?
PositiveGuy

10
これはgit 2.5.0では機能しませんが、git push origin --tags機能します。
nnyby

3
push.followTagsのヒントをありがとう。これがすぐに使えるデフォルトではないとは信じられません。それがなければ、タグを付けることさえ気にしないでください、あなたは忘れて、同期タグから外れるでしょう。
moodboom 2016年

3609

単一のタグをプッシュするには:

git push origin <tag_name>

そして、次のコマンドはすべてのタグをプッシュする必要があります(推奨されません):

git push --tags

427
git push --tags同僚がすべてのタグをプッシュするように訓練されている場合、悪いタグを取り除くのは非常に難しいため、他のユーザーを使用したり、使用するように訓練したりしないことをお勧めします。新しいタグをプッシュします。このため、私は誰かにgit push origin <tag_name>今使用するようアドバイスするだけです。
Scott Jungwirth 2014

43
移動したタグをプッシュするにgit push origin <tag_name> --force
Bob Stein '25年

38
まあ@ScottJungwirth開発者としては注意が必要だと思います。それ以外の場合は、使用可能なコマンドをまったく教えないようにアドバイスすることもできます。
ウィラ

18
タグがリモートブランチと同じgit pusherror: src refspec <tag_name> matches more than one.、で失敗する場合、次のようにプッシュできますgit push origin tag <tag_name>
Volodymyr Sapsai

5
さて@Willaの質問は「リモートリポジトリにタグをプッシュする」でした。したがってgit push origin <tag_name>、その質問に対するはるかに良い答えです。;)
ワイルドカード2016年

265

特定をプッシュするには、1つのタグで次のようにします git push origin tag_name


99

Trevorの答えを拡張するには、単一のタグまたはすべてのタグを一度にプッシュできます。

単一のタグをプッシュする

git push <remote> <tag>

これは、これを説明する関連ドキュメントの要約です(簡潔にするために一部のコマンドオプションは省略されています)。

git push [[<repository> [<refspec>…]]

<refspec>...

<refspec>パラメータの形式は…ソースの参照<src>、コロン:、宛先の参照の順になります<dst>

<dst>このプッシュで更新され、リモート側のどの参照告げる... Ifは:<dst>省略され、同じ参照<src>更新されます...

タグ<tag>はと同じ意味refs/tags/<tag>:refs/tags/<tag>です。

すべてのタグを一度にプッシュする

git push --tags <remote>
# Or
git push <remote> --tags

以下は関連ドキュメントの要約です(簡潔にするために一部のコマンドオプションは省略されています)。

git push [--all | --mirror | --tags] [<repository> [<refspec>…]]

--tags

refs/tagsコマンドラインに明示的にリストされているrefspecに加えて、その下のすべての参照がプッシュされます。


例では、キーワードを省略していtagます。例えばgit push origin tag funny-tag-1
JamesThomasMoon1979

1
@ JamesThomasMoon1979あなたはそれを必要としません。あなたはこのように原点に単一のタグをプッシュ:git push origin my-tag(私はちょうどそれを試してみました!)
アンドレスF.

私はバージョン1.9.1を使用していましたが、@ AndresFはどうですか。?
JamesThomasMoon1979 '14年

1
@ JamesThomasMoon1979バージョン2.10.2。多分それだけですか?
アンドレスF.

54

タグはgit pushコマンドによってリモートリポジトリに送信されません。次のコマンドを使用して、これらのタグをリモートサーバーに明示的に送信する必要があります。

git push origin <tagname>

以下のコマンドを使用して、すべてのタグを一度にプッシュできます。

git push origin --tags

gitタグ付けの詳細については、次のリソースをご覧ください。

http://www.cubearticle.com/articles/more/git/git-tag

http://wptheming.com/2011/04/add-remove-github-tags


51

git push --tagsコマンドを実行するだけで、すべてのローカルタグをプッシュできます。

$ git tag                         # see tag lists
$ git push origin <tag-name>      # push a single tag
$ git push --tags                 # push all local tags 


15

git push <remote-name> tag <tag-name>タグをプッシュしていることを確認するために使用しています。私は次のように使用しますgit push origin tag v1.0.1。このパターンは、ドキュメント(man git-push)に基づいています。

OPTIONS
   ...
   <refspec>...
       ...
       tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>.

1
すばらしい、上にあるべきだった-ブランチではなくタグがerrによってプッシュされることを保証するため。
samshers
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.