上圖是乙個cad設計師的施工**件夾,他需要修改原來的施工圖,但是他又不想把修改前的檔案狀態和內容給破壞掉,因為如果直接修改,萬一修改的有問題,或者後悔修改了,如果以前的檔案狀態還在的話,大不了把修改糟糕了的刪除了就是了,所以他其實就用到了最簡單的版本控制方法,那就是複製重新命名;
具體寫程式的過程也是一樣的道理,其實就是乙個反覆編輯,不厭其煩的編輯的過程。你修改的時候不希望破壞掉修改前的狀態,最好就是每修改一段事件,能夠儲存乙個狀態,類似系統的自動快照一樣,當後面出現問題的時候,可以自由選擇復原到之前的某個快照狀態;
還有乙個原因,那就是,最後發布軟體的時候很多時候會有多個版本,而生成軟體的源**卻往往只有乙份,只是在最後編譯生成的時候用到不同的部分,大部分**還是共用的,所以往往需要版本控制,幾個版本複製幾個資料夾出來;
版本控制的過程也是過程追蹤記錄,成就達成的過程。
還有就是很多時候做乙個專案,往往不是單槍匹馬單打獨鬥的,是需要很多個人之間合作的,多人合作自然也需要進行多份文件可以編輯,最後再來合併;
當然,上面主要是說明版本控制的方法並不是現在軟體行業的版本控制方法,因為缺點很多:
鑑於上面的原因,於是就出現了很多版本控制的工具,這些工具能夠做到隨時提交快照,並附帶上乙個小的log說明這次更改的內容;而且控制方式是採用增量的方式,所以專案體積不會占用太多;如果你想知道前後有什麼區別,這些工具還能給你提供基於文字對比,給你展示哪些地方進行過修改;如果編輯出問題,可以隨時會到之前提交過的任一快照。多人合作,許可權控制,多個分支等等,good and strong.
分布式自然就是每個人的地方多有乙份完全的**,提交和管理都是在本地進行,雖然有遠端倉庫,不過那是最終提交用的,沒聯網本地也是完整**的,只是每次需要最新的**的時候才必須聯網;分布式的代表就是git,對應的網上倉庫比較有名的就是github.
主要是多個人合作的時候,可能會發生兩個人同時提交乙個檔案的不同更改,這時候版本控制上就會出現衝突,就必須人工介入來決定保留誰的,否決誰的,當然這個事情是由倉庫的建立者決定的。
目前的版本控制對文字內容有很好的支援,但是對二進位制檔案幾乎沒有支援,所以盡量不要在二進位制檔案上用這些版本控制工具,這不是他們的長處,二進位制檔案還是老老實實複製重新命名吧,所以說其他設計行業的人苦逼啊。
為什麼要進行認知公升級?
我們生活在乙個最好的時代,也生活在乙個最壞的時代。最好,是因為機會無限多。最壞,是因為到處人才擁擠。可是 只要你足夠好,上天就眷顧你。而我們作為乙個個體,想要獲得上天的垂憐,除了選擇去撞概率買彩票一夜暴富之外,唯一的方式有且只有一條 通過不斷成長,變得足夠好。一兩年前,我追女孩子琢磨出乙個真理,與某...
為什麼要進行介面測試?
1,什麼是介面?可以簡單理解成用來連線而開放的入口,比如前端和後端的連續需要用介面,移動端和後台的鏈結也需要用到介面。連線前端後端和移動端。2,介面都有哪些型別?介面一般分為兩種 1 程式內部的介面 2 系統對外的介面 系統對外的介面 比如你要從別的 或伺服器上獲取資源或資訊,別人肯定不會把資料庫共...
為什麼要進行系統拆分
要是不拆分,乙個大系統幾十萬行 20 個人維護乙份 簡直是悲劇啊。經常改著改著就衝突了,各種 衝突和合併要處理,非常耗費時間 經常我改動了我的 你呼叫了我的,導致你的 也得重新測試,麻煩的要死 然後每次發布都是幾十萬行 的系統一起發布,大家得一起提心吊膽準備上線,幾十萬行 的上線,可能每次上線都要做...