大家在編寫代碼的過程中或多或少的都會(huì)遇到管本管理的問題,諸如,各種各樣的命名以區(qū)分兩套程序,可能兩者就因?yàn)楦牧艘恍写a,但是沒辦法,必須保留兩份,因?yàn)槭莾蓚€(gè)功能。我學(xué)習(xí)和研究了一下 GIT 版本管理工具后對(duì)于所謂的版本管理才有了一定認(rèn)知。在我剛剛接觸 git 的時(shí)候除了命令行不太熟悉之外,我深深喜歡上了這個(gè)工具。給大家講解一下 git 的應(yīng)用場(chǎng)景,大家根據(jù)場(chǎng)景來決定自己是否有必要繼續(xù)學(xué)習(xí)和使用 git 工具。
場(chǎng)景 1:程序包太多導(dǎo)致文件過大
“小明,給我在原有功能的基礎(chǔ)上增加一個(gè)按鍵的功能。”小明做完了功能開發(fā)找到老板。“老板,拿走,你要的新增按鍵功能。”老板說道:“客戶說這個(gè)功能暫時(shí)不需要了,下次需要的時(shí)候再說吧。”小明回到電腦座位上將本次開發(fā)后的程序制作成了一個(gè)壓縮包,然后明明上備注成:xxxx年xx月xx日,老板增加按鍵的功能。
這種方式也就是我大學(xué)剛畢業(yè)時(shí)使用的,因?yàn)槲覉?jiān)信,我不會(huì)忘記每個(gè)壓縮包的功能,我也不會(huì)忘記每個(gè)壓縮包之間的關(guān)系。但是,直到我從第一家公司離職的時(shí)候我才發(fā)現(xiàn),我制作的壓縮包已經(jīng)高達(dá)幾十G,它們之間的關(guān)系我基本都不清楚了。我需要解壓之后比對(duì)臨近的版本才能知道這個(gè)版本改了些什么東西。而且每次和別人一起合作寫代碼的時(shí)候,也要先比對(duì)一下大家的版本是否一致才能正常進(jìn)行。
如果使用 git 呢?那么你的文件總的占用空間會(huì)大幅減少,因?yàn)樗4娴氖切薷摹?/p>
場(chǎng)景 2:版本差異整合,人工工作量太大
看如上的版本變化圖,我來解釋一下。
A->B1->C->D 就是我們正在日常開發(fā)代碼的版本迭代過程,其中 A 修改部分 bug 升級(jí)為 B1,B1 又增加部分功能升級(jí)為 C 。以此類推。假如領(lǐng)導(dǎo)跟你說,我需要在之前 A 版本上新增加一個(gè)功能,你就興致勃勃的命名為 B2 了。功能開發(fā)結(jié)束之后,老板一看大賣,又提出,我們以后所有的版本都要增加該功能!那時(shí)你會(huì)怎么辦?當(dāng)然是手動(dòng)將 A->B2 所有的修改內(nèi)容完完全全的復(fù)制到 B1,C,D 的版本上去。然后把部分要修改的地方,再修改一次。
如果使用 git 呢?那么你就不需要手動(dòng)復(fù)制,只需要 執(zhí)行一次 merge 指令,就能代替你的動(dòng)作。請(qǐng)注意,使用了 git 版本管理工具之后,是簡(jiǎn)化了人工操作。不必進(jìn)行大量的重復(fù)勞動(dòng)力。
場(chǎng)景 3:本地文件丟失
假設(shè)一下,如果當(dāng)小明開開心心地寫著代碼,結(jié)果電腦不知道怎么地就發(fā)起了脾氣,電源按了無(wú)數(shù)次就是不能把電腦點(diǎn)亮,這樣你在這臺(tái)電腦上存放的所有程序直接變?yōu)?0 。而如果你使用了 git 的遠(yuǎn)程管理功能,那么,你就可以從遠(yuǎn)程服務(wù)器中下載最近一次的上傳版本信息。有人說,我也用網(wǎng)盤保存了我全部的版本信息了。但是你有沒有想過一件事,你所謂的保存的版本只是一個(gè)又一個(gè)的壓縮包,體積太大。所以還是 git 的遠(yuǎn)程管理功能更為實(shí)用方便。