问题描述
如果出现tag和heads重名,就会报错
问题分析
refs/heads/*
是分支名称refs/tags/*
是tag名称refs/remotes/*
是远程track名称
对heads命名时,用的一般是 main,master ,即refs/heads/master
,refs/heads/main
对tags命名时,用的一般是v0.1, v0.2,即refs/tags/v1.0
当你用执行git push origin master
时,由于master
一般只在heads,不在tags中,所以git就直接能找到你要推送的分支。
但是这里:
git ls-remote
结果如下:
61d10100326130d2eceee85167d5ec2d9970ebbe refs/heads/seq_task
4ee9724f3a6a47134483e4955c688f4f34432ee0 refs/heads/simulastsharedtask
83e615d66905b8ca7483122a37da1a85f13f4b8e refs/heads/v0.10.2
bdf09e1321a77252835550e84d73ad1bb3f3173c refs/heads/xlmr_benchmark
3e5a2739bce92b2516d060959a1aa3dd51d221dc refs/tags/v0.10.0
8a0b56efeecba6941c1c0e81a3b86f0a219e6653 refs/tags/v0.10.1
83e615d66905b8ca7483122a37da1a85f13f4b8e refs/tags/v0.10.2
出现了两次v0.10.2
,分别对应tags和heads,所以报错。
解决方法
- 更改分支的heads或者tags名称(更改方法自行Google)
- 用分支全称来推送
git push origin refs/heads/main:refs/tags/v1.2
参考
https://stackoverflow.com/questions/70584317/git-push-error-dst-refspec-refs-heads-main-matches-more-than-one