10

SourceTree からタグを削除する方法を知っています。右クリックして削除し、「すべてのリモートからタグを削除」にチェックマークを付けるだけです。次に、以下を実行します (読みやすくするためにフラグは省略しています-c diff.mnemonicprefix=false -c core.quotepath=false)。

git tag -d my_tag
git push -v origin :refs/tags/my_tag

これは機能します。

これが問題です。

しばらくして、他の開発者の 1 人がフィーチャー ブランチをオリジンにプッシュすると、SourceTree はすべてのローカル タグを自動的にリモート サーバーにプッシュします。これにより、削除したばかりのタグが再作成されます。

タグ付けされたリリースなど、タグが削除されることは「想定」されていないという考えは知っていますが、間違いが発生する場合があります。

何かアドバイス?

4

1 に答える 1

12

私が見つけた唯一の解決策は、リモートからタグを削除した後、他のすべての開発者にタグのローカル コピーを削除するように依頼することです。ここでスクリプトのヘルプを見つけました。

簡単に言うと、git fetch -p -t のようなことをしようとしても、git バージョン 1.9.4 以降では機能しません。

ただし、最新バージョンでも機能する簡単な回避策があります。

git tag -l | xargs git tag -d # remove all local tags
git fetch -t                  # fetch remote tags

ワンライナーは次のように書くことができます:

git tag -l | xargs git tag -d && git fetch -t

別の方法として、 ~/.gitconfig ファイルに新しいエイリアスを追加して、物事を短くすることもできます:

~/.gitconfig で

[alias]

     pt = !git tag -l | xargs git tag -d && git fetch -t 

これで、単に pt エイリアスを呼び出して、ローカルの古いタグを削除できます。

git pt
于 2016-07-22T00:58:45.023 に答える