2012-03-12 8 views

答えて

3

git fetch --tagsとなります。 docs--tagsパラメータの記述)から

タグのほとんどは枝ヘッドがダウンロードされるように自動的にフェッチが、されているブランチヘッドから到達可能なオブジェクトを指していませんタグされていますこのメカニズムによって追跡されることはありません。このフラグは、すべてのタグおよび関連オブジェクトをダウンロードできるようにします。リモートのデフォルト動作は、remote..tagpt設定で指定できます。

+0

を使用しかし、彼らは間違って – linquize

+1

'gitのを作成しましたので、私は、既存のローカルタグを上書きする方法を求めていますリモートタグFOOが1234567にマップされ、ローカルタグFOOがfedcba9にマップされている場合、 'git fetch --tags'はFOOを1234567に置き換えます。 – torek

+0

アップデート:gitの新しいバージョンでは、ローカルタグを更新しなくなります。 'git fetch '+ refs/tags/*:refs/tags/*''(強制的に更新することもできます( '--force'も動作しますが、これはテストしていません)。 – torek

-1

タグは上書きされません。ソート不変であるためです。 (現実的に)変更可能なオブジェクトを使用する場合は、代わりにブランチポインタまたはrefを使用します。 これは、gitタグ-d のタグ名 ...を残してから再度フェッチします。

+0

私はあなたの最初の声明に同意しません - これは、VCSの使用の全体的な点を歪めるでしょうか? – lightonphiri

+0

Gitは書き直し(すでに共有されているリモート)履歴を推奨しません。それはVCSのポイントを打ち負かすことはありません - 歴史を維持することです!ほとんどの場合、そのようなことを強制することは可能ですが、それはかなりの問題を引き起こす可能性があります。 –

4

git fetch --tags --all --prune

これは、明示的に取得するためにはgitに伝えると同時に、もはやリモートに存在するタグを削除します。

+1

ローカルにしか存在しなかったタグは削除されません。 –

+0

@MartijnHeemels、gitはプッシュされなかったタグとリモートから削除されたタグを区別できません。 –

0

まず、ブランチとは異なり、gitはローカルタグとは異なるリモートタグを追跡しません。一度フェッチが終了すると、区別できなくなります。

  • は地元のタグを更新しない(マニュアルはわかりませんが)
    • git fetch --tags
  • は、ローカルタグを更新しません
    • git fetch
    • git fetch --prune
    • git fetch --prune --force

タグ更新/上書きは、次のようになります。

From git:path/name 
- [tag update]  my_tag -> my_tag 

これは、軽量、注釈付きのタグに対しても、混合動作します。つまり、注釈付きのタグは軽量のタグで上書きされ、逆も同様です。

、例えば、--tags`は実際には既存のローカルタグを更新しますフェッチ私はGitのバージョン2.7.4

+0

注:これは、リモートで削除されたタグを削除しません。 –

+0

@CarlosHeubergerあなたのコメントは、あなたがそれを行う方法があると信じているが、そうではないと考えています。実際には、リモートに存在しないすべてのローカルタグを削除できますが、リモコンには一切存在しなかった_localタグも削除されます(例:プッシュされていないタグやローカルのみのタグ)。 remote_deletedされたタグだけを削除する方法はありません。 –

+0

私のコメントが、それを示唆していると思われる理由がわかりません - 私はそれを行う方法がないと書いたことはありません!私はあなたの答えを補完しようとしましたが、ローカルタグは削除されず、 "ローカルタグを更新する"ということは、リモートで削除されたタグを削除するとも理解できないからです。私はそれが明確な声明(隠された提案なし)だと思う...しかし、私の英語はおそらく私が思うより悪いです。 –

関連する問題