2012-02-13 5 views
3

デプロイメント時に、自動的にHEADにタグを追加する( 'git tag -f。。'を介して)デプロイスクリプトを使用しています。ザ・ホスト。スクリプトは自動的にタグを( 'git push --tags'を介して)プッシュしますので、リポジトリの他のユーザは、サーバが現在実行しているコミットを知ることができます。一般的には、私は(手動で)展開する前にコミットをプッシュするので、タグはリモートサーバー上のコミットと一致しますが、私は 'git push - タグを使ってコミットのタグをプッシュすると何が起こるか不思議です'、コミット自体はまだプッシュされていません。プッシュされていないコミット用のタグをプッシュするとどうなるのですか?

+2

なぜあなたはそれを試してみませんか? – svick

+0

セントラルレポジトリを混乱させる恐れがあるので、私は考えます:)。それに影響を及ぼす実験は、私のチームでは一般的に嫌われています。 –

+0

gitが分散しているので、自分のコンピュータにテストリポジトリを設定して、それを簡単に実行できます。 gitサーバをインストールする必要はなく、単にファイルプロトコルを使用するだけです。またはgithubまたは同様のサービスでテストリポジトリを設定します。 – svick

答えて

6

タグを押すと、タグに必要なものがすべてプッシュされます。これは、そのコミットが指しているコミットを押すことを意味します。つまり、コミットのためにツリーをプッシュすること、そのツリーのサブツリー、ツリー内のブロブ、およびそのコミットの先祖などを押すことを意味します。対応するオブジェクトを押さずにrefを押すのは意味がありません。だからGitはこれをやっていません。

1

タグに必要なすべてのオブジェクトがプッシュされますが、その他の参照(HEADやマスターなど)は更新されません。したがって、あなたが行った変更とあなたのタグはリモートリポジトリにありますが、マスタ(またはあなたが使っているブランチ)をプルする人は誰も、ブランチのコピーに対してあなたのコミットをまだ見ていません。