日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Git-error: dst refspec branch matches more than one 

 liang1234_ 2019-02-13

 問(wèn)題是如何發(fā)現(xiàn)的

今天整理之前的老項(xiàng)目,發(fā)現(xiàn)前期遺留下很多無(wú)用分支,于是,有點(diǎn)強(qiáng)迫癥的我就刪刪刪,刪出了下列這個(gè)錯(cuò)誤:

這里寫(xiě)圖片描述

當(dāng)時(shí)嚇了我一跳,以為自己不小心錯(cuò)誤操作了什么,然而并不是,刪除其他的分支還是正常的,就是只有其中一個(gè)分支不行。

然后我 Google 了這個(gè)問(wèn)題,果然遇到錯(cuò)誤的不是我一個(gè)人(這個(gè)心理活動(dòng),真的每次都會(huì)有····)

error: dst refspec dev_test matches more than one.

當(dāng)遠(yuǎn)程倉(cāng)庫(kù)同時(shí)存在相同名稱的 branch 和 tag 時(shí),不指明絕對(duì)路徑的前提下,操作這個(gè)名稱的 branch 和 tag 都會(huì)出現(xiàn)這個(gè)問(wèn)題。

答案先行

解決方法很簡(jiǎn)單,指明操作對(duì)象的絕對(duì)路徑就能準(zhǔn)確操作了

對(duì)象 路徑
branch refs/heads/branch_name
tag refs/tags/tag_name

舉個(gè)刪除的例子:
//刪除 dev_test 分支
git push origin :refs/heads/dev_test

//刪除 dev_test 標(biāo)簽
git push origin :refs/tags/dev_test

看這里可以驗(yàn)證真相

error: dst refspec dev_test matches more than one.

其實(shí),仔細(xì)看看返回的錯(cuò)誤提示,基本都明白了。(是的,其實(shí)當(dāng)時(shí)我沒(méi)看懂)
上面的提示指出失敗原因是 在 refspec 中 ,dev_test這個(gè)名字,對(duì)應(yīng)了多個(gè)。

于是,我就去項(xiàng)目的 .git/refs中看了一下,果然如此

這里寫(xiě)圖片描述

得了一種非要自己試試才能相信的病

我承認(rèn),我有病,一種非要自己試試才能相信的病,特別是,最近剛開(kāi)始用 git 命令行 ,總想自己敲敲敲,感覺(jué)很爽。

我準(zhǔn)備創(chuàng)建一個(gè)叫 dev_test的分支和標(biāo)簽,然后刪除一下試試看,重現(xiàn)錯(cuò)誤。

我腦海中的重現(xiàn)命令行是這樣的:

1.git branch branch dev_test  //創(chuàng)建本地分支 dev_test
2.git push origin dev_test    //創(chuàng)建遠(yuǎn)程分支 dev_test
3.git tag dev_test            //創(chuàng)建本地標(biāo)簽 dev_test
4.git push origin dev_test    //創(chuàng)建遠(yuǎn)程標(biāo)簽 dev_test
5.git push origin :dev_test   //刪除遠(yuǎn)程分支 dev_test
//然后出現(xiàn)錯(cuò)誤

事實(shí)是到到第4步就出現(xiàn)了這個(gè)錯(cuò)誤,如下:

這里寫(xiě)圖片描述

那我真是好奇了,當(dāng)初我們的開(kāi)發(fā)是怎么做到,把相同的分支和標(biāo)簽給推上去遠(yuǎn)程的?

參考問(wèn)題的解決方法,我嘗試使用完成路徑推送,果然成功了,命令如下:

git push origin refs/tags/dev_test

這里寫(xiě)圖片描述

好吧,到這里,下面的刪除遠(yuǎn)程 dev_test命令,我用眉毛想都知道百分之百會(huì)報(bào)錯(cuò)。
這里寫(xiě)圖片描述

# 總結(jié)

重現(xiàn)問(wèn)題的過(guò)程中,對(duì) git 的認(rèn)知又更加清楚了一點(diǎn)。
一是,git 真的很智能,當(dāng)我們使用 git push origin <name>的時(shí)候,會(huì)自動(dòng)判斷 <name> 在本地版本中是 branch 還是 tag ,然后分別推送對(duì)應(yīng)的位置。

二是,第一次對(duì).git 文件夾中的目錄結(jié)構(gòu)和對(duì)應(yīng)的內(nèi)容感覺(jué)到一種非常強(qiáng)烈的好奇,好想知道 git 是怎么把代碼管理的這么井井有條,使用起來(lái)這么方便的。

三是,Linus Torvalds 真是太強(qiáng)大了。

加油!

PS:

測(cè)試完之后,我試圖刪除這個(gè)遠(yuǎn)程倉(cāng)庫(kù)用來(lái)測(cè)試的dev_test分支,但是遇到了一個(gè)新的錯(cuò)誤,如下:

這里寫(xiě)圖片描述

原因是因?yàn)楫?dāng)時(shí)dev_test是遠(yuǎn)程倉(cāng)庫(kù)的默認(rèn)分支,無(wú)法刪除,去 github 把遠(yuǎn)程倉(cāng)庫(kù)的默認(rèn)分支修改一下就好了。

具體見(jiàn): Git- [!remote rejected]:refusing to delete the current branch

歡迎關(guān)注個(gè)人微信公眾號(hào),最新的博客,好玩的事情,都會(huì)在上面分享,期待與你共同成長(zhǎng)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多