Git 是要做什麼?為什麼要用 Git?


Posted by yunanpan on 2020-06-16

在使用 Git 之前,需要先知道 Git 到底是什麼?
簡單來說,Git 是協助版本控制的程式。
這時候可能又會想問版本控制不就好好整理跟命名資料夾就好了嗎?為什麼需要用 Git 來幫助我們做版本控制呢?


誤以為自己是考古學家

「在存了太多版本的歷史檔案後,總會讓後來翻找檔案的時候,一個不小心忘了自己是誰,以為自己是考古學家。」 --〈me の 血淚史〉

在一個進行中的案子,總是免不了需要來回修改。每改一次,就會存一次檔當作歷史版本的備份檔。當越改越多,越存越多時,資料夾就會長成以下的樣子:

就算有規定存檔名稱,讓檔案存檔好像有個規律,但卻缺乏每一個版本修改了什麼內容的提示。當今天突然想要以最新版本與過去修改某一個特定功能的檔案比較時,大家只好來考古,一一挖出每個檔案內容,看到底裡面改了什麼,時間久了,人來人去,更難知道發生了什麼事,每個歷史檔案都變成不可考的失落古文明。

還是個很會玩大家來找碴的考古學家

那如果是多人協作的話,資料夾又會變成什麼樣子呢?

又是 ann,又是 pan,實在搞不清楚 ann 修改了什麼,也不知道 pan 改了什麼,或許他們改到了一樣的東西?那哪個應該是最新的版本?pan 有 v2,ann 沒有,兩個人的版本該怎麼併在一起才是對的?最後變成玩大家來找碴,看檔案內容到底改了什麼。
而利用 Git 來做版本控制便可防止自己變身成為精通大家來找碴的考古學家。


那 Git 版本控制是什麼樣的概念?

Git 可以透過不同分支處理不同功能,再合併至主檔案中。如果發現改到相同檔案而有所衝突時,也會跳警告與比較以利修改後整併。而在每個階段將檔案加入版本控制與提交到資料庫時,也會記錄每個版本修改的部分以利後續查詢。以防止改太久改到忘記自己改了什麼,或是在茫茫資料中對照改了什麼看到眼睛脫窗。

以以上示意圖為例,ann 和 pan 都是以相同基礎(M 檔案)另外建立分支去處理各自的工作內容,當修改完工作內容後再併回 M 檔案中。那如果 pan 在併入的時候,發現與 ann 寫的部分衝突了,也會跳出比較來對照哪邊有衝突。此版本管理機制在多人協作時較可分清權責,也比較不會發生不知道你的第幾版該跟他的第幾版配在一起才是對的。










Related Posts

【單元測試的藝術】Chap 4: 使用模擬物件驗證互動

【單元測試的藝術】Chap 4: 使用模擬物件驗證互動

Chapter 8&9 建立分析團隊&活用KPI及資訊主頁

Chapter 8&9 建立分析團隊&活用KPI及資訊主頁

兩年過後,我能夠被稱為資深工程師了嗎?

兩年過後,我能夠被稱為資深工程師了嗎?


Comments