在學版本控制前,先理解三件事

在學版本控制之前,我覺得先理解以下幾個問題,會對學習更有幫助:

  1. 什麼是版本控制?
  2. 為什麼要用版本控制?
  3. 為什麼要讓軟體來幫我們做版控?

什麼是版本控制?

你一定做過報告吧?那你的報告檔案是不是會像這樣:報告 01 -> 報告 02 -> 報告最終版 -> 報告真的最終版。

這個其實就是「版本控制」。一個檔案你可能有很多個版本,但你又希望每個版本都能保存下來,接著為了知道每個版本之間的差異,你透過「命名」的方式來表示它們之間的關係。

為什麼要用版本控制?

如同上面所說,一個檔案可能有很多個版本,但你可能會怕之後不小心做壞了,所以為了避免這種搞壞了要全部重做的事情發生,我們會希望有一個「備用方案」的檔案。

所以「保存」其實就是我們做版控最主要的目的。

然而,當規模小的時候,你可以用「報告 01、報告 02,報告 03,…」這樣子的方式來做版控,但是當規模很大的時候,這就不是一個很好的做法(後面會解釋為什麼)。

這個時候你就會需要「讓程式來幫你做版本控制」。

為什麼要讓軟體來幫我們做版控?

想想看這個情境:假設有一份專案,目前有一個「穩定版」的版本。現在我們想要開發新功能,所以就繼續從穩定版的那個版本來做:

1
2
-> 穩定版
-> 穩定版 + 開發新功能

但是如果現在 PM 突然跟你說有 Bug 需要修復,你該怎麼做?

是不是只能先把新功能拿掉,把 Bug 修復完畢,接著再重新開發新功能:

1
2
3
4
5
6
7
8
-> 穩定版
-> 穩定版 + 開發新功能

=== PM 說先修 Bug ===

-> 拿掉新功能,先修復 Bug
-> 修復 Bug 後的穩定版(發佈出去)
-> 修復 Bug 後的穩定版 + 開發新功能

(因為你不能把還沒開發完的新功能給一起發佈出去,所以你一定要先拿掉新功能,修好 Bug,接著才把修復好的檔案發佈。)

這種做法叫做「一條線的開發方式」。這種方式有個很大的問題:你沒有辦法同時處理多個事情。

但是,現在如果透過版控軟體(例如 Git)就可以建立一個出「分支(兩條線)」的概念:

1
2
A 線:穩定版 -> 新功能 -> 新功能 -> ...
B 線:穩定版 -> bug fix -> bug fix -> ...

你要開發新功能,就在 A 線這條分支上開發;你要修復 Bug,就在 B 線這條分支上修復,不需要像剛才一樣,先把新功能拿掉,接著再來修 Bug 這麼麻煩。

接著,當新功能開發完成後,我們不需要 A 線這條分支了,所以我們會把 A、B 合併起來(假設把 A 併到 B),就會變成這樣:

1
B 線:穩定版 -> bug fix -> bug fix -> ... -> 新功能 -> ... -> 新功能 -> 正式發佈

所以透過版控軟體,大家就可以在 A 線或 B 線上各做各的事情,不用擔心彼此之間會互相干擾。

最後當其中一條線的任務完成時,只要透過「合併」的方式來變回一條線,就完成團隊之間的協作了。

從自己做版控來學 Git NPM 的圖片資料夾設定
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×