Git|版本控制初學

讓我們藉由 Git 學習有系統的版本控制

Git 是一種版本控制系統,普遍印象會認為只有工程師在使用,儘管如此,我們還是能藉由 Git 了解版本控制。


大綱
1. 我為何接觸 Git?
2. Git 是什麼 ?
3. 為何要使用 Git?
4. 了解 Git 的版控方式,是為了 …
5. 基本概念

我為何接觸 Git?

有極大的原因是因為自學寫網站(齁齁,網站還沒上線),加上男友是 APP 工程師,自然而然就接觸 Git。

網站的專案包,容量不小,內有數不清的程式碼,反覆修改之後,不可能記住所有的修改,到底改了什麼?萬一,想回到某個版本,或是抽取某段程式碼,沒有 Git 版控的話,只能全部重來。

關於 Git 的其餘描述,請見內文。


Git 是什麼 ?

例如,當我們在寫報告的時候,有時會需要存取多個版本的檔案;更謹慎一點,還會額外備份檔案。

Design by Jhane Chou

Without Git

常見的做法是,使用資料夾,放入每個報告檔案,並且替每個報告檔案命名,命名可能是版號或是日期,讓檔案們具有基本的版本控制,未來能快速找到對應的版本。

但是,檔案的整體容量會隨著版本的增加,變得越來越龐大。

With Git

藉由 Git 來做出主幹,再由主幹發展分支,像是樹狀的生長方式。你可以利用 Git 隨心所欲地回到不同的版本,甚至是將 B 版本的內容,合併至 A 版本中。

Git 與 GitHub 不同,不要搞混囉。

為何要使用 Git?

Design by Jhane Chou

何謂有系統的管理?

  1. 能見到目前版本與先前版本的差異在哪
  2. 能回復到某個版本
  3. 能將新的功能分支出來,並在功能完成時合併回去
  4. 可利用 Git 和遠端儲存庫進行多人分工

將開發中的功能建置一個分支來進行開發,再為不同的功能建置新的分支來進行開發,完成後再合併回主幹,藉由這樣的方式達成多人分工,還能保持程式碼品質。


了解 Git 的版控方式,是為了 …

倘若今天我只會某種固有的知識,那做法永遠一成不變,無法因應不同的情況。又或許,聰明的你,已經知道許多好的做法,只是沒找到好的工具來幫你達成。

而 Git 就是好的工具之一。


基本概念

為了能好理解,盡可能紀錄最簡單的描述。

add & commit

將本次修改的內容進行 commit(提交),使用 add 告知 Git:哪些內容需要被提交上去?

  1. git add . ( . 的意思是給全部),若是指定的檔案,則是 git add <檔案>
  2. git commit -m “<自定義訊息>” 提交時撰寫本次提交的訊息,方便未來管理
加入 -m 是為了可以使用指令提交訊息,因為 commit 必須要寫提交訊息才可以提交。
commit 必須是檔案有變動才能 commit。

add 這個指令是讓檔案先加入到待提交的狀態;commit 則是提交。

add & commit 的概念有點像買衣服,把確定會買的衣服放在櫃台,跟店員說先幫我留著(add);最後都確定之後,一起結帳(commit)。

branch

分支是將目前的支幹複製一份分支出去,分支(branch)可用來做備份或是做新的開發。

分支的概念和單機遊戲的遊戲紀錄很像,當遊戲進度需要保存時,會需要走到存檔點存檔,下次開啟遊戲時,可選擇讀取檔案繼續遊戲。

當然,存檔可以存好幾個不同的進度,像是第一章破完有人會習慣存檔 01,第二章破完會存檔 02,在不同的章節做個紀錄,之後可能遇到想回去拿某個章節的彩蛋時,就不用再將遊戲重玩。

Design by Jhane Chou

假設我們將存檔 01、02、03 欄位各視為分支 branch

在存檔 01 時存入新的進度,如同一個 commit 提交;若繼續在存檔 01 的欄位繼續存檔覆蓋,等同於再加上一個新的 commit 提交。


接下來是一些軟體的補充。

Git Bash

一開始從 Git Bash 使用 Git(←被某人強迫)直至現在。

Git Bash 截圖

IntelliJ

intellij 是我目前編寫網站程式碼的軟體,它內建 terminal(終端機?)也可以在這裡使用 Git,有時候,懶得開啟 Git Bash 的時,會直接使用 terminal。

其實開啟 Git Bash 是多餘的,只是習慣了。

intellij 截圖

SourceTree

如果你不想使用終端機,你可以使用 SourceTree,SourceTree 提供了 GUI 的管理界面,可直接在軟體內管理。

重點是:他!免!費!

SourceTree,很少開啟,因目前使用到的功能,在 intellij 都有。

SourceTree 截圖

文章同步發佈平台&支持,可前往不同平台進行拍手支持,或透過下方的 Like 讚賞(註冊 Liker 完全免費)讓創作者獲得額外收入!

.MediumMatters

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

🪐 凡人 ✶ Mortal
冷漠的__人
🌕 原創主題
LINE 原創主題|未歸檔 ── 下雨天
🧇 職涯故事
我如何成為自由接案工作者?(08)
精選文章
文章指南&支持作者的方式
🥯 靈感啟發
Art Deco|Sun, moon and you.
🌕 原創主題
LINE 原創主題|客製 ── 友誼長存
🧇 平台經營
2022 年 LINE 主題創作者問答
🧇 職涯故事
我如何成為自由接案工作者?(04)

Share