iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
1

在學習一個新的程式語言時,尤其是跟著範例寫的時候,由於對語法還不熟悉,時常會不小心把程式改壞。若是寫程式的時候,也可以有類似時光還原的功能,那該有多好?很幸運的,我們可以用版本管理系統來輔助我們把每一次的修改紀錄下來。在這篇文章裡,筆者就會示範如何使用 Git 版本管理系統來紀錄我們的專案。

建立版本管理

IntelliJ IDEA 內建 Git GUI,方便我們以圖型介面的方式操作 Git。不過,由於它也只是一個 GUI,所以必須自行在本機端安裝 Git 版本管理系統。我們可以到 Git 官網 下載安裝檔或是以 Scoop 指令 $ scoop install git 安裝。 IntelliJ IDEA 會自動在幾個常見路徑抓取 git.exe,我們也可以手動指定 Git 路徑。完成 Git 的基本設定後,就可以在 IntelliJ IDEA 裡使用 Git 版本管理。

要以 Git 管理專案的版本,首先要在專案資料夾根目錄初始化 Git。請按 IntelliJ IDEA 功能表 VSC > Enable Version Control Intergration,出現對話框選「Git」後按 OK。

IntelliJ IDEA 會在左邊出現一個 Commit 面板及下方出現一個 Git 面板。其實剛剛這個動作,跟在 Terminal 底下輸入 $ git init 是一樣的意思。你可以在專案資料夾裡發現多了一個名為 .git 的隱藏資料夾。

完成第一個 Commit

每當我們使用 Git 來管理時,Git 會一直比對版本儲存庫(也就是 .git 資料夾裡)與專案資料夾之間的差異。由於我們才剛初始化版本管理,所以現在資料夾裡的所有檔案都沒有在版本儲存庫裡,我們要先把這些檔案 Commit 到版本儲存庫完成第一個 Commit。

打開 Commit 面板,會看到裡面有很多 Unversioned Files,把它打勾選擇全部的檔案,接著點開右下角的齒輪符號,把 Perform code analysis 和 Check TODO 取消選取,在輸入框裡輸入 Commit Message 後按下 Commit。

這樣就完成第一個 Commit。打開下方的 Git 面板,切換到 Log 分頁,你可以看到剛剛完成的 Commit 紀錄,未來可以在這個面板裡查看每一次 Commit 的時間軸。

利用版本管理比對差異

完成第一個 Commit 後,接下來在修改程式的時候,IntelliJ IDEA 就可以隨時標示你的變更。這邊以 app.kt 為例,假如我們將原本的 Hello World 程式修改成如下:

fun main() {
    println("What's your name?")
    val name= readLine()
    println("Hello $name!")
}

在編輯區域的 Gutter,你可以看到有不同的顏色標示。綠色代表是新增的程式碼、藍色代表的是修改的程式碼、白色的箭頭則代表程式碼被刪除。若你點選這些顏色標示,會出現浮動視窗顯示原本在該位置的程式碼,點選 Rollback 就可以一鍵復原該區塊的程式碼。

假如你想要看到的是整份檔案的左右對照,則可以開啟 Commit 面板,選擇你想要查看的檔案,按右鍵選擇「Show Diff」,就會出現該檔案的比對畫面。左邊是該檔案在儲存庫裡的版本、右邊是目前的修改,IntelliJ IDEA 會用視覺化的輔助來強調兩個版本間的差異。

把程式碼推送到 Github

Git 是一種分散式版本管理系統,也就是說它不需要依賴網路或中央伺服器就可以自行運作。而當我們今天需要跟別人交換檔案,比方說把範例程式碼公佈出去、把自己卡關的程式放到網路上求救、貢獻開放原始碼專案時,就需要一個中介平台。以目前流行使用的平台,就屬 Github 最知名。本系列文章的範例程式碼,也會推送一份到 Github 供大家參考,接下來就介紹怎麼在 IntelliJ IDEA 裡把專案推到 Github。

請選擇功能表 VCS > Import into Version Control > Share Project on Github,依照畫面提示輸入 Github 的登入資訊,或是使用 Token 登入。成功登入後,IntelliJ IDEA 會尋問專案名稱及 Remote 設定,完成後按 Share 就會將程式推送到 Github,並產生出公開的 Github Repository URL。

把範例檔複製一份回本地端

假如想要把範例程式碼複製一份回本地端,在 IntelliJ IDEA 的啟動頁就有「Get from Version Control」的選項可以使用。在這邊筆者想分享一個更簡單直覺的方式,就是用前幾篇文章提到的 Toolbox App!

請先依照你的使用習慣在 Google ChromeFirefox 安裝瀏覽器 Extension。

安裝好後,請用瀏覽器開啟上一步的 Github URL,你應該會發現在網頁上多了 IntelliJ IDEA 的按鈕。按一下就會提示你開啟 Toolbox App,Toolbox App 就會啟動 IntelliJ IDEA 並尋問你要 Clone 到哪個位置。按下 OK 後,原本要 3-4 步、路徑剪剪貼貼的動作就能一鍵完成!

這個 JetBrains Toolbox Extension 的作用很簡單,每次瀏覽到 Github、Gitlab 或 Bitbucket 時,Extension 都會自動識別該 Repository 用的程式語言為何,然後幫你放對應 IDE 的按鈕,你就可以一鍵把 Repository Clone 回來,然後在該 IDE 裡打開,省去很多操作時間。在這邊也把這個當成小作業,讓大家練習把範例 Repository 複製一份到自己的本機。

善用版本管理輔助學習

在這篇文章裡可以看到因為有 Git 加上 IntelliJ IDEA 的視覺輔助,我們可以在寫程式的當下就知道我們新增、刪除、修改了什麼,若發現剛剛的修改讓程式壞了可以立即還原,還能透過 Github 來做備份與分享。這就是為什麼筆者會說在學習程式語言時,使用版本管理會有很大幫助的原因。這種隨時有安全繩在保護的感覺,會讓你更安心地去試驗各種語法,學習起來更有效果。

文章的最後要提醒大家,Git 時間軸上的每一個紀錄都是要你自己 Commit 才會有的。換句話說,若你寫了很久的程式但都沒有 Commit,這些修改過程都不會有紀錄的。因此,我會建議初學者在一開始可以每完成一個步驟就 Commit 一次。只要能夠協助你學習,即便每一次 Commit 修改幅度很小也沒關係,等到熟悉後再來遵循 Commit 的最佳實踐即可。希望版本管理可以成為你往後學習 Collection 時的最佳助手。

參考資料


上一篇
第四天:我的第一個 Kotlin 程式
下一篇
第六天:Kotlin 基礎語法
系列文
新手也能懂的 Kotlin Collection 賞玩門道31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言