我們寫程式,難免修修改改,今天訂下版本0.1,明天訂到版本0.2。結果老闆要你臨時用0.1改個版面出貨,然後0.3趕快發布內部測試使用。
這時適合你的好工具就是版本控制軟體,我推薦GIT。
早期我寫程式遇到要備份或是改版,是先將整個資料夾壓縮完畢以後,複製一份出來,再去做更改。這樣改錯以後,也可以用原來的壓縮備份擋去改回來。
如果程式碼少少功能少少,你又總是只維護這一個,那麼我想沒什麼問題。
可是時間久了,我常常想不起來A程式我做了什麼東西,B程式新增了什麼功能,C程式版本V1.0 V2.0 V3.0間有什麼不同。
尤其一種情況是業務需求C程式需要版本V1.0客製化出貨,版本V3.0又要繼續開發新功能。
如果你有這個困擾,那麼該開始使用版本控管軟體了。
用[GIT]這樣的版本控管軟體可以有幾個好處:
GIT 提交一個版本的方式叫做commit。
程式你有時寫著寫著功能完成了,於是提交commit 交差。這時你有個大膽的想法,會改動許多的地方,你一做下去沒日沒夜。於是你每完成一小段都commit 一下。
然後連日操勞下的你某天不知道改了什麼東西,有些功能就是沒辦法ctrl + z 弄回來了。
幸好你在那之前有個commit,你可以用git reset回到那個commit點,重新修改。
我們軟體設計師,這個也可以做,那個也可以做,只要軟體可以完成的都不是問題。(嗯,問題就要來了)當你做的夠多的時候,有天老闆問你這個程式是幹嘛的,你一看覺得這孩子好陌生是不是別人生的阿?(可是部門就只有你一個軟體工程師)
這個情況下,用 git log 可以帶回你的記憶,只要你每次commit好好面對,寫清楚提交這個版本功能是幹嘛的,看一輪以後你就知道你這個程式是做什麼的了。
A客戶很欣賞你的軟體,業務報了個好價錢之後想要使用。
接著B客戶說只想要你的軟體某段功能,C客戶又問除了原始功能以外還想要新增功能。
業務興奮的說都可以賣,我們客製化為您報價。然後就是讓你想想辦法具體怎麼做。
GIT的辦法就是ABC分支。
給A客戶的,我們主線程式當中新建一個A分支,然後修潤一下打包出貨。
從A分支再分叉出去新建B分支,修修剪剪以後打包出貨給B客戶。
然後是C客戶了,他要新增功能,我們用主線再分叉出去新建C分支,寫完他想要的功能,一樣打包出貨。
以後哪個客戶有問題了,你不用再去查東查西,先到出貨給他的分支看看log,就能知道你當初寫的功能是什麼。(commit 那段話的提交真的很重要,要好好寫)
在我們有限的時光當中,人生不能從來。但GIT的世界內可以平行宇宙,無限分支。