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