在
網(wǎng)站開發(fā)項目中,由于 正確使用 Git 標(biāo)簽,存在的第一個 Git 管理的項目v4.11-rc7-87-g28cf22d0ba28相當(dāng)于 28cf22d0ba28. 這是由于注解的存在v4.11-rc7。更好的字符串是git describe. 當(dāng)傳遞前者時,接受后者的任何命令的行為都相同。當(dāng) git 出現(xiàn)時[anystring]-g[hash],它會丟棄[anystring]-g 前綴,并將[hash]part 視為所需的提交來解決。
Git 標(biāo)簽讓我們可以使用派生它的軟件版本來美化任何 Git 哈希。然而,在許多項目中,Git 標(biāo)簽在最好的情況下通常沒有充分發(fā)揮其潛力,而在最壞的情況下,它們被濫用了。在這篇文章中,我提供了一些建議列表,以幫助在任何項目中實現(xiàn)從 Git 標(biāo)記中獲得的精確性。
一個常見的陷阱是讓任何開發(fā)人員推送 Git 標(biāo)簽。以下情況發(fā)生在不止一家公司中:有人推了一個test標(biāo)簽。其他人test在項目的根目錄中創(chuàng)建了子目錄?,F(xiàn)在,git log test是一個不知道該做什么的模棱兩可的命令。它應(yīng)該顯示從 指向的提交開始的提交test,還是來自HEAD修改該test目錄的提交?或者開發(fā)商有一個本地test分支?頭痛。
如果可能,將 Git 服務(wù)器配置為僅接受來自發(fā)布管理器的標(biāo)簽推送。標(biāo)簽是獨一無二的,并且永遠存在于 repo 中。選擇不會與您的分支名稱約定產(chǎn)生歧義的良好標(biāo)簽名稱。
一個不錯的約定如下:要標(biāo)記版本,請以v. 這樣,shell 完成在嘗試完成時可以很好地工作v。如果您放棄v 并立即使用版本號 .eg 1.,shell 完成將難以顯示以 開頭的標(biāo)記1和所有 git 哈希以 開頭的提交之間的完成1。
默認情況下git tag創(chuàng)建輕量級標(biāo)簽(非注釋標(biāo)簽)。請傳遞-a開關(guān)以創(chuàng)建帶注釋的標(biāo)簽。這樣,創(chuàng)建標(biāo)簽的元數(shù)據(jù)就像提交一樣被注冊。此外,git describe開箱--tags即用,不需要強制它考慮輕量級標(biāo)簽所需的標(biāo)志。
Git 標(biāo)簽只是 Git 的補充信息,它們不是源本身。使用 Git 標(biāo)記和源代碼樹文件來告知代碼的版本。這通常是您選擇的生態(tài)系統(tǒng)的包管理器清單中的版本字符串。但是如何正確地做到這一點?即應(yīng)該標(biāo)記哪些提交?這將我們帶到下一個建議 。