リモートリポジトリにタグがある場合、プルすると通常自動的に取得されます。作成したローカルタグ(git tag -d <tag-name>
)を削除してプルすると、削除したタグが再作成されます。リモートブランチ/タグ()を削除できますが、リモートタグをフェッチしてローカルタグが作成されたgit push <remote-branch/tag-name>:<branch/tag-name>
ことをどのように検出できますか?
3 に答える
実行時にこれらのタグが再作成されることに悩まされている場合は、 remote。<remote-name>.tagoptconfig設定git pull
を使用してデフォルトでタグのフェッチをオフにします。たとえば、リモコンがの場合、次のことができます。origin
git config remote.origin.tagopt --no-tags
更新:あなたのコメントに対処するために、これを提案する理由は、ローカルで作成されたタグとリモートからフェッチされたタグの違いを明確に区別する方法がないためです。reflog
タグもありません。したがって、私の提案は、タグの自動フェッチを抑制することです。その後、タグを別の名前空間に自分でフェッチできます。たとえば、次のことができます。
git fetch origin +refs/tags/*:refs/tags/origin/*
...そしておそらくそのためのエイリアスを作成します。次に、タグをフェッチする場合、たとえば、のrefs/tags/origin/tag1
代わりに名前が付けられますrefs/tags/tag1
。
これを自動的に実行したい場合は.git/config
、フェッチする複数のrefspecをリストするように変更できます。例:
[remote "origin"]
url = whoever@whereever:whatever.git
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/tags/*:refs/tags/origin/*
...これはProGitで提案されています。
タグは「ローカル」または「リモート」ではありません。コミットに関連付けられており、リモート名前空間のブランチを含む複数のブランチの一部にすることができます。
タグによって参照されるコミットのタグSHA1を取得します
git show -s 'TAG_NAME^{commit}' --format='%H'
、および実行:
git branch -a --contains SHA1
あなたが見たら
remotes/aRemoteRepoName/aBranch
タグがリモートリポジトリからフェッチしたコミットを参照していることを知っています。
クリスが言及するように:
git branch -a --contains TAGNAME
タグを逆参照し、一度に答えを出します。
現在リモートリポジトリにアクセスできる限り、次の結果を比較できます。
git ls-remote --tags
と
git show-ref --tags -d
ノート:
- リモートは現在利用可能である必要があります
- タグがリモートから削除された場合、「ローカル」タグが元々リモートからプルされたことがわかりません。
- これにより、リモートとローカルのタグ名が同じであるが、異なるコミットを参照しているか、個別に作成/更新されているかを確認できます(注釈付きタグの場合、コミットハッシュが同じであってもタグハッシュは異なります)