helen's blog

ずっとおもしろいことしてたいな。

ブランチ名とタグ名を同じにしたら怒られた件

# コミット指定でタグ打ち
$ git tag fix-stg-bkdest b56e49b

# 怒られました
$ git push origin fix-stg-bkdest
error: src refspec fix-stg-bkdest matches more than one.
error: failed to push some refs to 'ssh://git@~~~~~~~~~.git'

ブランチ名とタグ名を同じなのが原因なのはわかっていたので
どこまでブランチが消えてればいいのかなと思ったので実験してみた

リモートブランチを削除
$ git fetch                   
$ git push origin fix-stg-bkdest
error: src refspec fix-stg-bkdest matches more than one.
error: failed to push some refs to 'ssh://git@~~~~~~~~.git'

だめでした

ローカルブランチの削除
$ git branch -d fix-stg-bkdest
Deleted branch fix-stg-bkdest (was 113fdc6).
$ git push origin fix-stg-bkdest
Total 0 (delta 0), reused 0 (delta 0)
To ssh://git@~~~~~~~~~~~~.git
 * [new tag]         fix-stg-bkdest -> fix-stg-bkdest

いけた

このとき

$ git branch -a
remotes/origin/fix-stg-bkdest
...

追跡ブランチは残ってたけどそれはいいらしい

追跡ブランチの消し方
$ git branch -rd origin/fix-stg-bkdest   # remoteはつけない
Deleted remote-tracking branch origin/fix-stg-bkdest (was 113fdc6).
  • rオプションで追跡ブランチに対する操作ができるようだ

参考:git remote branch deleted but still appears in 'branch -a' - Stack Overflow

ブランチ綺麗にするのもいいけど追跡ブランチも消さないとなー

あ、ちなみに今日で社会人2年目突入しました
4/1だけど嘘じゃないよ!!