作為一枚程序猿下隧,相信很多人都有過小萌同學(xué)的經(jīng)歷,當(dāng)修改了一堆bug后谓媒,要更新代碼到服務(wù)器上淆院,此時(shí),最簡單的方式是將項(xiàng)目文件全部上傳一次句惯,這種方式可行迫筑,但不可取宪赶。為什么?你懂的!
本文章標(biāo)題提到git,是一款免費(fèi)脯燃、開源的分布式版本控制系統(tǒng)搂妻,想信很多人也用過或者接觸過.小萌同學(xué)以前用過svn,但后來接觸到git辕棚,果斷放棄svn欲主,擁抱git.
其實(shí)可以直接在服務(wù)器用git pull代碼的方式來更新代碼,但如果遇到你的服務(wù)器是linux服務(wù)器并且不帶UI界面的逝嚎,除非你命令行指令及git很熟悉扁瓢,要不然遇到代碼沖突還是比較麻煩的,小萌同學(xué)這方面的水平有限补君。當(dāng)然也有其他原因引几,不推薦此方式更新。
下面挽铁,小萌同學(xué)為大家介紹下利用git來來打更新包伟桅。
打包原理:
利用git archive輸出兩個(gè)提交間的改變
NEW_COMMIT_ID_HERE 較新的提交
IDOLD_COMMIT_ID_HERE 較舊的提交ID(以此作為更新打包起始點(diǎn))
現(xiàn)在我有兩次提交(commit)
第一次提交的ID為438eac0,提交了一個(gè)文件
第二次提交的ID為4d5baf6叽掘,提交了三個(gè)文件
然后按照上面打包指令:
git archive -o update.zip 4d5baf6 $(git diff --name-only 438eac0 4d5baf6)
執(zhí)行一下指令楣铁,會(huì)發(fā)現(xiàn)目錄中多了一個(gè)update.zip壓縮文件
小萌同學(xué)解壓文件看一下有什么內(nèi)容
是小萌同學(xué)第二個(gè)提交的文件及目錄,這說明了OLD_COMMIT_ID_HERE僅作為打包的起始點(diǎn)更扁,但并不包含OLD_COMMIT_ID_HERE提交的內(nèi)容盖腕。
當(dāng)然NEW_COMMIT_ID_HERE 和OLD_COMMIT_ID_HERE之間可以間隔多個(gè)COMMIT的,這樣就會(huì)打多個(gè)COMMIT的內(nèi)容打包到一個(gè)壓縮包內(nèi)浓镜。
最后溃列,只要解壓出來的內(nèi)容通過FTP工具上傳到服務(wù)器即可。
上面展示的內(nèi)容只是單一的代碼更新膛薛,實(shí)際的更新可能還會(huì)涉及多個(gè)方面的哭廉,例如數(shù)據(jù)庫腳本、配置文件等相叁,小萌同學(xué)在此文章中就不作過多的討論遵绰。有興趣的同學(xué)可以百度或者GOOGLE。
謝謝各位的閱讀增淹,希望能跟大家多交流椿访,小萌想學(xué)習(xí)更多知識(shí)。
作者:頭條號(hào) / 啟萌分享
鏈接:http://toutiao.com/i6323519704526750209/
來源:頭條號(hào)(今日頭條旗下創(chuàng)作平臺(tái))
著作權(quán)歸作者所有虑润。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)成玫,非商業(yè)轉(zhuǎn)載請注明出處。