本篇內(nèi)容介紹了“Git的遴選是什么及怎么使用”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
10余年的蟠龍網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整蟠龍建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“蟠龍網(wǎng)站設(shè)計(jì)”,“蟠龍網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
使用遴選(cherry-pick
)命令,Git 可以讓你將任何分支中的個(gè)別提交合并到你當(dāng)前的 Git HEAD 分支中。
當(dāng)執(zhí)行 git merge
或者 git rebase
時(shí),一個(gè)分支的所有提交都會(huì)被合并。cherry-pick
命令允許你選擇單個(gè)提交進(jìn)行整合。
下面的情況可能會(huì)讓你更容易理解遴選功能。
想象一下,你正在為即將到來的每周沖刺實(shí)現(xiàn)新功能。當(dāng)你的代碼準(zhǔn)備好了,你會(huì)把它推送到遠(yuǎn)程分支,準(zhǔn)備進(jìn)行測(cè)試。
然而,客戶并不是對(duì)所有修改都滿意,要求你只呈現(xiàn)某些修改。因?yàn)榭蛻暨€沒有批準(zhǔn)下次發(fā)布的所有修改,所以 git rebase
不會(huì)有預(yù)期的結(jié)果。為什么會(huì)這樣?因?yàn)?nbsp;git rebase
或者 git merge
會(huì)把上一個(gè)沖刺的每一個(gè)調(diào)整都納入其中。
遴選就是答案!因?yàn)樗魂P(guān)注在提交中添加的變更,所以遴選只會(huì)帶入批準(zhǔn)的變更,而不添加其他的提交。
還有其他幾個(gè)原因可以使用遴選:
這對(duì)于 bug 修復(fù)是必不可少的,因?yàn)?bug 是出現(xiàn)在開發(fā)分支中對(duì)應(yīng)的提交的。
你可以通過使用 git cherry-pick
來避免不必要的工作,而不用使用其他選項(xiàng)例如 git diff
來應(yīng)用特定變更。
如果因?yàn)椴煌?Git 分支的版本不兼容而無法將整個(gè)分支聯(lián)合起來,那么它是一個(gè)很有用的工具。
在 cherry-pick
命令的最簡(jiǎn)單形式中,你只需使用 SHA 標(biāo)識(shí)符來表示你想整合到當(dāng)前 HEAD 分支的提交。
要獲得提交的哈希值,可以使用 git log
命令:
$ git log --oneline
當(dāng)你知道了提交的哈希值后,你就可以使用 cherry-pick
命令。
語法是:
$ git cherry-pick
例如:
$ git cherry-pick 65be1e5
這將會(huì)把指定的修改合并到當(dāng)前已簽出的分支上。
如果你想做進(jìn)一步的修改,也可以讓 Git 將提交的變更內(nèi)容添加到你的工作副本中。
語法是:
$ git cherry-pick--no-commit
例如:
$ git cherry-pick 65be1e5 --no-commit
如果你想同時(shí)選擇多個(gè)提交,請(qǐng)將它們的提交哈希值用空格隔開:
$ git cherry-pick hash2 hash4
當(dāng)遴選提交時(shí),你不能使用 git pull
命令,因?yàn)樗塬@取一個(gè)倉庫的提交并自動(dòng)合并到另一個(gè)倉庫。cherry-pick
是一個(gè)專門不這么做的工具;另一方面,你可以使用 git fetch
,它可以獲取提交,但不應(yīng)用它們。毫無疑問,git pull
很方便,但它不精確。
要嘗試這個(gè)過程,啟動(dòng)終端并生成一個(gè)示例項(xiàng)目:
$ mkdir fruit.git$ cd fruit.git$ git init .
創(chuàng)建一些數(shù)據(jù)并提交:
$ echo "Kiwifruit" > fruit.txt$ git add fruit.txt$ git commit -m 'First commit'
現(xiàn)在,通過創(chuàng)建一個(gè)項(xiàng)目的復(fù)刻來代表一個(gè)遠(yuǎn)程開發(fā)者:
$ mkdir ~/fruit.fork$ cd !$$ echo "Strawberry" >> fruit.txt$ git add fruit.txt$ git commit -m 'Added a fruit"
這是一個(gè)有效的提交?,F(xiàn)在,創(chuàng)建一個(gè)不好的提交,代表你不想合并到你的項(xiàng)目中的東西:
$ echo "Rhubarb" >> fruit.txt$ git add fruit.txt$ git commit -m 'Added a vegetable that tastes like a fruit"
返回你的倉庫,從你的假想的開發(fā)者那里獲取提交的內(nèi)容:
$ cd ~/fruit.git$ git remote add dev ~/fruit.fork$ git fetch devremote: Counting objects: 6, done.remote: Compressing objects: 100% (2/2), done.remote: Total 6 (delta 0), reused 0 (delta 0)Unpacking objects: 100% (6/6), done...
$ git log –oneline dev/mastere858ab2 Added a vegetable that tastes like a fruit0664292 Added a fruitb56e0f8 First commit
你已經(jīng)從你想象中的開發(fā)者那里獲取了提交的內(nèi)容,但你還沒有將它們合并到你的版本庫中。你想接受第二個(gè)提交,但不想接受第三個(gè)提交,所以使用 cherry-pick
。
$ git cherry-pick 0664292
第二次提交現(xiàn)在在你的倉庫里了:
$ cat fruit.txtKiwifruitStrawberry
將你的更改推送到遠(yuǎn)程服務(wù)器上,這就完成了!
在開發(fā)者社區(qū)中,通常不鼓勵(lì)所以遴選。主要原因是它會(huì)造成重復(fù)提交,而你也失去了跟蹤你的提交歷史的能力。
如果你不按順序地遴選了大量的提交,這些提交會(huì)被記錄在你的分支中,這可能會(huì)在 Git 分支中導(dǎo)致不理想的結(jié)果。
遴選是一個(gè)強(qiáng)大的命令,如果沒有正確理解可能發(fā)生的情況,它可能會(huì)導(dǎo)致問題。不過,當(dāng)你搞砸了,提交到錯(cuò)誤的分支時(shí),它可能會(huì)救你一命(至少是你當(dāng)天的工作)。
“Git的遴選是什么及怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!