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