相信每一個學習程式設計的人都會接觸到這麼個東西——版本控制系統。說不定很多人都已經用上它了,卻仍舊沒搞清楚它是什麼東西,比如說我。
剛開始只是身邊大佬強行安利我了這麼個工具,說是一個巨好用也巨實用的玩意兒,大致用法也簡單的學了一下,但實際這個工具究竟是個什麼東西?這個工具用於什麼場景?使用這個工具的好處在哪裡?我全然沒有搞清楚,直到開始學程式設計的時候再次遇見這個工具。
剛開始使用是讓大佬什麼都幫我配置好,自己只需要利用三方提供的操作介面進行提交推送罷了,輪到自己學到這裡,嘗試自己去從頭開始去操作的時候發現自己還有很多沒搞清楚的地方,故此在這裡將自己這幾天學習整理出來的東西記下來。如有不足之處,望看到的人能夠指正。
什麼是版本控制系統?
版本控制系統(Version Control System,簡稱VCS),什麼是版本控制系統呢?這個問題,完全可以用另一個問題——版本控制系統可用於什麼場景——的答案來解答。
比如:
策劃按甲方意思改了四五遍,甲方說要第一版……
畢業論文按照指導老師意見改了八九版,老師最後說第五版查重率最低,啟用第五版……
作者靈感突發,興致勃勃編了一長串文字,中間添添改改好幾回,卻發現越改越沒有最初的感覺了,想換回最初的描寫……
程式猿改bug,最初一個bug,一週後變五個bug,心塞地想回到只有一個bug的時候……
這種時候就需要版本控制——從一開始就將自己每一次編輯、修改的版本,都做好標記完整地備份下來,將來需要的時候根據自身做好的標記,找出對應的版本。
而版本控制系統簡單來說就是——從一開始就將自己每一次編輯、修改的版本,都做好標記完整地備份下來,將來需要的時候根據自身做好的標記,找出對應的版本等——這一系列行為的系統化。
使用版本控制系統的好處在哪裡?
肯定會有人這麼想,既然手動都可以版本控制,直接手動控制不就得了?幹嘛還要裝一個版本控制系統,那不是很雞肋嗎?
相信經常刷視訊資訊什麼的人一定聽過這麼一句話:拋開劑量談毒性就是在耍流氓。
這裡套用一下:拋開需要處理的量來談實用性就是在耍流氓!
同樣是進行版本控制,你當然可以手動控制版本,一兩個檔案尤其是隻需要小改,最多也就只需要備份個兩三回,三四回的時候;但如果改動的地方比較多,比較大,需要處理的檔案多範圍廣的時候呢?
進行手動備份,雖然麻煩了些,可能還是弄得下來,但這種情況下回溯的時候,又如何區分知道哪個版本是自己想要的版本呢?在備份的時候做註釋?每版都手動加入一個註釋檔案,然後在查詢的時候挨個點開去找?
顯然,這將是一個不小的工程量。
再者,從最早創立的版本控制系統 SCCS(Source Code Control System,1972年由貝爾實驗室的 Marc Rochkind 於用 C 語言開發)到現在,幾十年間,版本控制系統這種工具,早已從最開始單純用於控制檔案和歷史記錄更改的系統,進化成現在用於協調程式設計師在軟體開發過程中協作開發原始碼工作的系統。
到現在,版本控制系統所能進行的操作遠不是“手動操作也就稍微麻煩點“可以代替的了。
如何選擇版本控制系統?
上面也說了,從最初的版本控制系統釋出到現在,已經過去幾十年了,應該不會有人以為版本控制系統只是一個系統的名稱吧?
實際上版本控制系統是一類系統的統稱,既然都說是一類了,肯定不是一兩個能打發得了的了。
作為一個菜鳥,其實我並不關心在這漫漫幾十年光景中,版本控制系統是如何變遷的,也不想關心,那麼多可選擇的版本控制系統都有些什麼特色。我只關心,既然它們有那麼多,我該學哪個?該用哪個?
這是一個非常明確的答案:哪個的使用者最多,選哪個。
為什麼呢?
拜託,現實不是偶像劇,而且與計算機作業系統不同,會用到版本控制系統的多半都不是門外漢,請不要懷疑市場經濟的結果和大佬們的眼光。
而且,最最重要的一點是,無論是剛接觸程式設計的,還是學的七七八八,想要小試牛刀的小可愛,除非你可以一學完出來就從不假手於人,獨自開發專案,那你想用什麼都無所謂,甚至不用版本控制系統,你喜歡手動備份,您開心,隨你;否則你未來都還是要接觸前輩們的,然後,前輩們都在用的版本控制系統你能不學?畢竟本著少數服從多數的原則,讓人全公司為了遷就你而集體更改版本控制系統這件事,如果你就是老闆,請隨意。
話到這裡,就不得不提最受歡迎的兩大版本控制系統 Git 和 SVN(Subversion)了,很不幸,到我寫這篇部落格的時候,SVN 已然式微,但它與 Git 其實各具優點,儘管這個優點也許在不久的將來也會被 Git 所借鑑……
吶,人類的發展本身也是個相互借鑑,相互成長的過程。
碼字不易,請轉載的各位務必註明出處——Eva0110——呀。
雖然感覺這一篇基本不會有人看就是了。