リポジトリを作成したため、作成したタグがリポジトリにプッシュされていないようです。ローカル ディレクトリで実行git tag
するとすべてのタグが表示されますが、リモート リポジトリにログオンして を実行するgit tag
と、最初のいくつかしか表示されません。
問題は何ですか?
あなたはこれを行うことができます:
git push --tags
デフォルトの git リモート構成では、タグを明示的にプッシュする必要があります(タグが指すコミットと一緒に自動的に取得されます)。使用する必要があります
$ git push <remote> tag <tagname>
単一のタグをプッシュする、または
$ git push <remote> --tags
すべてのタグをプッシュします (またはgit push --tags
、通常はデフォルトのリモートにプッシュしますorigin
)。
これは、タグのプッシュを明示的にするために非常に意図された動作です。タグをプッシュすることは、通常、意識的に選択する必要があります。
Junio C. Hamanoが書いた内容の要約(@Andre Miras のコメントにリンク)
取得すると、誰かが公開したリモート リポジトリと対話します。つまり、次のことを意味します。
- そこに存在するタグのセットは、パブリッシャーが人々に見てもらいたいと思っていたすべてのものであり、
- あなただけでなく、他の人にも同じタグが表示されます。
つまり、取得元のリポジトリ内のタグは、公開および共有されるように設計されています。誰もが同じタグを簡単に取得できれば、開発者間のコミュニケーションが容易になります。
つまりgit fetch
、タグが指すリビジョンをダウンロードするときにタグをダウンロードします。つまり、関連するすべての公開済みタグをダウンロードします。
プッシュするときは、ほとんどの場合公開されていない作業リポジトリからプッシュしているため、そのリポジトリのタグは公開するように設計されていません。独自のローカル タグを使用して進行状況をマークできるため、リポジトリ内のすべてのタグをやみくもに変更を公開するためにプッシュしているリポジトリにプッシュすることは意味がありません。そのタグは定義上パブリックです。
そのため、タグを公開としてマークするには、タグを明示的にプッシュする必要があります。
または、プッシュ先のリモートを構成して、常にすべてのタグをプッシュすることもできます.git/config
。
[remote "publish"] # または名前が何であれ URL = ... プッシュ = +refs/heads/*:refs/heads/* プッシュ = +refs/tags/*:refs/tags/*
これは、すべてのヘッド (すべてのブランチ) とすべてのタグを強制的にプッシュすることを意味します (ヘッドを強制的にプッシュしたくない場合は、refspec から '+' プレフィックスを削除してください)。
git 1.8.3 (2013 年 4 月 22 日)以降、ブランチをプッシュしてからタグをプッシュする 2 つのコマンドを実行する必要がなくなりました。
新しい "
--follow-tags
" オプションは、ブランチgit push
をプッシュするときに、関連する注釈付きタグをプッシュするように指示します。
新しいコミットをプッシュするときに、次のことを試すことができます。
git push --follow-tags
ただし、すべてのローカル タグをプッシュするわけではありませんgit push
。
これはJunio C Hamano ( )によってコミット c2aba15で導入されました。gitster
新しいオプション "
--follow-tags
" は "git push
" に、反対側から欠落している注釈付きタグをプッシュするように指示します。たとえば、"
simple
"、"current
"、または "upstream
" プッシュを使用している場合、通常は現在のコミットにつながる履歴をプッシュし、他にはHEAD
何もプッシュしません。
このオプションを使用すると、そのコミットから到達できるすべての注釈付きタグを反対側にプッシュすることもできます。
構成では、デフォルトpush.followTags
で含めることができ--follow-tags
ます (Git 2.4.1+、2015 年第 2 四半期)。「 git コミットとタグを同時にプッシュする」を参照してください
私が通常行うことは次のとおりです。
[remote "publish"] # または名前が何であれ URL = ... プッシュ = : プッシュ = +refs/tags/*:refs/tags/*
つまり、すでにそこにあるすべてのブランチとタグをプッシュします。プッシュを強制したり、手動でプッシュしなかったブランチをプッシュしたりしません。
そして、すべてのタグを強制的に取得したい場合は、次のように構成で設定できます。
git config remote.origin.tagopt --tags
ドキュメントから:
この値を --no-tags に設定すると、リモートからフェッチする際の自動タグ追跡が無効になります。--tags に設定すると、リモート ブランチ ヘッドから到達できない場合でも、すべてのタグが remote からフェッチされます。これらのフラグを直接 git-fetch(1) に渡すと、この設定をオーバーライドできます。git-fetch(1) のオプション --tags および --no-tags を参照してください。