iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0

在知道怎麼的簡單的建起一個應用程式之後,應該會迫不急待的想要加入更多的新功能吧?但是先等一下,我們要來聊一個不是寫程式,但跟程式有關的話題。

這塊地圖正式的名稱叫「軟體工程」,研究的是當程式愈來愈複雜的時候,我們要了解怎麼管理各種程式碼,有哪些工具,大家怎麼合作,怎麼做計劃等知識。

怎麼不讓 AI 弄壞你的程式真正的好方法,就是軟體工程中的版本控制。如果你有聽過 git 這個字,這就是目前最流行的版本控制工具。

我們用一個在學校繳報告的例子,來解釋版本控制怎麼運作,有什麼好處。

沒有版本控制的情況

老師要大家繳一篇動物園的心得報告。小明寫了這樣的內容:

昨天戶外教學,我去了動物園。

然後存檔成 📄作文.txt

過了一下,他覺得應該再多寫一點,所以他把內容修改成這樣

昨天戶外教學,我去了動物園,看到很多動物。
我最喜歡的是大象,牠的鼻子好長。

但是他又怕或許第一版寫得比較好,所以他留著第一版,另外存了一個新檔案 📄 作文_修改.txt
然後他修改文章,一邊存新的檔案。過了兩天,他的電腦的文件夾有這些檔案:

📄 作文_修改2.txt 📄 作文_最終版.txt 📄 作文_最終版_真的最後.txt 📄 作文_最終版_真的最後_確定版.txt📄 作文_最終版_真的最後_老師叫我改一段.txt

其實他已經不太分得出來哪個是最後的一份文件了。


有 Git 版本控制的情況

讓我們回到還沒有搞砸的過去,重來一次。小明用 Git 來管理他的作文,只有一個檔案 📄作文.txt

第一次寫完存檔的內容是這樣

昨天戶外教學,我去了動物園。

然後小明使用 git 的「儲存版本」(git commit) 功能,並幫這個版本取了一個名字:「寫了開頭」

接著小明寫了更多的內容:

昨天戶外教學,我去了動物園,看到很多動物。
我最喜歡的是大象,牠的鼻子好長。

小明再次用 git 的「儲存版本」(git commit) , 版本2的名字是 「加上大象的描述」

第三次新增內容:

昨天戶外教學,我去了動物園,看到很多動物。
我最喜歡的是大象,牠的鼻子好長。
猴子很頑皮,一直跳來跳去想要搶我們的零食,我超想揍它的。

小明再次用 git 的「儲存版本」(git commit) , 版本3的名字是 「加上猴子的部份」

用 Git 有哪些好處

1. 省空間

Git 的「儲存版本」功能,每次都只會記錄差異的部份,所以不用存重複的部份,很省空間。

2. 知道歷史記錄

由於每次記錄都會自動附上是什麼時間儲存版本的,所以可以看到一路以來的修改歷史(git log),也能馬上知道最後一個版本是哪一個。

💾 版本3:「加上猴子的部分」 - 2024/10/02下午3點 
💾 版本2:「加上大象的描述」 - 2024/10/02下午2點 
💾 版本1:「寫了開頭」 - 2024/10/02 下午1點

下面是一個真的用 Git 管理的範例,可以看到在某一次的修改中,在init.lua這個檔案中,刪掉了兩行(紅的),新增了一行(綠的)。

3. 時光機功能

老師說:「第二版寫得比較好,第三版的猴子那段不太好。」

小明只要使用 Git 裡「回到版本2」(git checkout) 的功能,作文就變回:

我的暑假很開心,我去了動物園,看到很多動物。
我最喜歡的是大象,牠的鼻子好長。

這樣不需要每個檔案都打開來看,也不用擔心之前的內容不見了。

4. 比較差異

小明想要知道版本 1 跟版本 3 差在哪裡,可以使用 Git 的「比較版本」(git diff) 功能,Git 會告訴他:

+ 我最喜歡的是大象,牠的鼻子好長。 
+ 還有猴子很頑皮,一直跳來跳去。

前面的 + 號表是這一行是新加入的。

5. 團隊合作

如果這個報告是要兩個人一起寫的,可以使用 Git 的「分支功能」(git branch),先各自寫自己的部份:

主要版本(main)
    │
    ├─ 小明的版本(加入動物園)
    │
    └─ 小華的版本(加入遊樂園)

最後在用「合併功能」(git merge) 把全部的內容合在一起。

營火前回顧

我們知道軟體工程是討論怎麼開發跟管理軟體比較好的知識領域,也學會了版本控制這個概念。目前最流行的版本控制工具叫 Git

Git 基本上有以下幾個重要的功能 (其實還有很多,但是先看這些就好)

  • 儲存版本: git commit
  • 顯示歷史記錄:git log
  • 取出特定版本: git checkout
  • 比較差異: git diff
  • 分支開發:git branch
  • 合併分支:git merge

下一章,我們就來幫我們的網頁程式加上 Git 控管,並看看為什麼 AI 這樣就不會弄壞我們的程式了吧!

很小很小的測驗

跟 AI 討論看看一下,如果小明跟小華在自己的分支裡都修改了作文的第一行,那合併的時候要怎麼辦呢?

地圖

又打開了一個新的領域了!


上一篇
Ch 16. 網頁程式是怎麼動起來的?
下一篇
Ch 18. 用中文也可以做版本控制
系列文
Just enough code with AI: 給新手們的程式設計世界觀21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言