リモートプル中にすべてのタグをフェッチするようにGitのデフォルトを設定できますか?


154

私は現在、次のようなgitリモートセットアップを持っています。

[remote "upstream"]
    url = <redacted>
    fetch = +refs/heads/*:refs/remotes/upstream/*

git pullブランチマスターで発行すると、すべてのリモートヘッドがリモート/アップストリームにフェッチされ、リモート/アップストリーム/マスターがマスターにマージされます。到達可能なタグも同時にフェッチされるのでとても便利です。

ヘッドから直接到達可能なタグだけでなく、リモートからすべてのタグgit pullをさらにフェッチしたいと思います。私は最初にを設定しようとしましたが、これが原因でタグのみがフェッチされ、すべてが壊れました。(Junioはそれは恐ろしい誤設定だとさえ言っている)。tagopt == --tags

git pullリモートヘッドに加えて、デフォルトですべてのリモートタグをフェッチする方法はありますか?


1
私への注意:最初にタグを実際にプッシュしたことを確認してください(自動的には機能しません): git push origin <tag_name>
Hafenkranich

tagoptソリューションを使用することは、もはや設定ミスではありません。1.9 / 2.0(2014年第1四半期)以降、通常フェッチされるものに加えすべてのタグがフェッチされます。
mgiuffrida

回答:


95

ローカル構成にタグのrefspecを追加することで、これを実現できるはずです。具体的には:

[remote "upstream"]
    url = <redacted>
    fetch = +refs/heads/*:refs/remotes/upstream/*
    fetch = +refs/tags/*:refs/tags/*

5
ああ、私はあなたが複数のフェッチ行を持つことができるとは思っていませんでした。それは非常に素晴らしく、明示的です。
jleahy 2013年

1
これをgit 2.21で使用することに注意してください。apple.stackexchange.com
questions /

306

シンプルな方法でgit fetch --tagsうまくいきました。


13
@Fizzixおそらく、タイトルを「デフォルトで」含むように変更する必要があります。この投稿は私の質問に答えました。
Matt Kneiser、2016年

2
これは私にはうまくいきませんでした。タグはで確認できますgit ls-remote
dangeroushobo

これは正確な質問には答えないかもしれませんが、タイトルの質問には答えます。それが私がウェブ検索で見つけた方法です。
Hubert Grzeskowiak

68

この--forceオプションは、ローカルタグの更新に役立ちます。主にフローティングタグがある場合:

git fetch --tags --force

git pullオプションにも--forceオプションがあり、説明は同じです:

git fetchが<rbranch>:<lbranch> refspecと共に使用される場合、フェッチするリモートブランチ<rbranch>が<lbranch>の子孫でない限り、ローカルブランチ<lbranch>の更新を拒否します。このオプションはそのチェックを上書きします。

しかし、のドキュメントによると--no-tags

デフォルトでは、リモートリポジトリからダウンロードされたオブジェクトを指すタグがフェッチされ、ローカルに保存されます。

そのデフォルトのステートメントが制限ではない場合、あなたはまた試すことができます

git pull --force

2
git pull --force含まないgit fetch --tags --force
Geniy

21

私にとっては、次のように動作したようです。

git pull --tags

タグのみを取得することを意味します: `git fetch --tags`
Yuseferi

との回答はすでにありますgit fetch --tags。別の答えを出したかったのです。プル=フェッチ+マージ。したがって、フェッチも発生します。
Vasantha Ganesh K


1

kernel.orgのmagitでこれを使用します

[remote "upstream"]
    url = <redacted>
    fetch = +refs/heads/*:refs/remotes/upstream/*
    tagOpt = --tags
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.