Git|版本控制初學
讓我們藉由 Git 學習有系統的版本控制。
大綱 1. 我為何接觸 Git? 2. Git 是什麼 ? 3. 為何要使用 Git? 4. 了解 Git 的版控方式,是為了 … 5. 基本概念
我為何接觸 Git?
有極大的原因是因為自學寫網站(齁齁,網站還沒上線),加上男友是 APP 工程師,自然而然就接觸 Git。
網站的專案包,容量不小,內有數不清的程式碼,反覆修改之後,不可能記住所有的修改,到底改了什麼?萬一,想回到某個版本,或是抽取某段程式碼,沒有 Git 版控的話,只能全部重來。
關於 Git 的其餘描述,請見內文。
Git 是什麼 ?
例如,當我們在寫報告的時候,有時會需要存取多個版本的檔案;更謹慎一點,還會額外備份檔案。
Without Git
常見的做法是,使用資料夾,放入每個報告檔案,並且替每個報告檔案命名,命名可能是版號或是日期,讓檔案們具有基本的版本控制,未來能快速找到對應的版本。
但是,檔案的整體容量會隨著版本的增加,變得越來越龐大。
With Git
藉由 Git 來做出主幹,再由主幹發展分支,像是樹狀的生長方式。你可以利用 Git 隨心所欲地回到不同的版本,甚至是將 B 版本的內容,合併至 A 版本中。
Git 與 GitHub 不同,不要搞混囉。
為何要使用 Git?
何謂有系統的管理?
- 能見到目前版本與先前版本的差異在哪
- 能回復到某個版本
- 能將新的功能分支出來,並在功能完成時合併回去
- 可利用 Git 和遠端儲存庫進行多人分工
將開發中的功能建置一個分支來進行開發,再為不同的功能建置新的分支來進行開發,完成後再合併回主幹,藉由這樣的方式達成多人分工,還能保持程式碼品質。
了解 Git 的版控方式,是為了 …
倘若今天我只會某種固有的知識,那做法永遠一成不變,無法因應不同的情況。又或許,聰明的你,已經知道許多好的做法,只是沒找到好的工具來幫你達成。
而 Git 就是好的工具之一。
基本概念
為了能好理解,盡可能紀錄最簡單的描述。
add & commit
將本次修改的內容進行 commit
(提交),使用 add
告知 Git:哪些內容需要被提交上去?
git add .
( . 的意思是給全部),若是指定的檔案,則是git add <檔案>
git commit -m “<自定義訊息>”
提交時撰寫本次提交的訊息,方便未來管理
加入 -m 是為了可以使用指令提交訊息,因為 commit 必須要寫提交訊息才可以提交。
commit 必須是檔案有變動才能 commit。
add
這個指令是讓檔案先加入到待提交的狀態;commit
則是提交。
add & commit 的概念有點像買衣服,把確定會買的衣服放在櫃台,跟店員說先幫我留著(add
);最後都確定之後,一起結帳(commit
)。
branch
分支是將目前的支幹複製一份分支出去,分支(branch
)可用來做備份或是做新的開發。
分支的概念和單機遊戲的遊戲紀錄很像,當遊戲進度需要保存時,會需要走到存檔點存檔,下次開啟遊戲時,可選擇讀取檔案繼續遊戲。
當然,存檔可以存好幾個不同的進度,像是第一章破完有人會習慣存檔 01,第二章破完會存檔 02,在不同的章節做個紀錄,之後可能遇到想回去拿某個章節的彩蛋時,就不用再將遊戲重玩。
假設我們將存檔 01、02、03 欄位各視為分支 branch
。
在存檔 01 時存入新的進度,如同一個 commit
提交;若繼續在存檔 01 的欄位繼續存檔覆蓋,等同於再加上一個新的 commit
提交。
接下來是一些軟體的補充。
Git Bash
一開始從 Git Bash 使用 Git(←被某人強迫)直至現在。
IntelliJ
intellij 是我目前編寫網站程式碼的軟體,它內建 terminal(終端機?)也可以在這裡使用 Git,有時候,懶得開啟 Git Bash 的時,會直接使用 terminal。
其實開啟 Git Bash 是多餘的,只是習慣了。
SourceTree
如果你不想使用終端機,你可以使用 SourceTree,SourceTree 提供了 GUI 的管理界面,可直接在軟體內管理。
重點是:他!免!費!
SourceTree,很少開啟,因目前使用到的功能,在 intellij 都有。
文章同步發佈平台&支持,可前往不同平台進行拍手支持,或透過下方的 Like 讚賞(註冊 Liker 完全免費)讓創作者獲得額外收入! .Medium .Matters