Learning Objectives
- 了解版本控制的用途,以及 Git 的四大區塊與檔案狀態
- 完成 Git 的安裝與初次設定(git --version、git config)
- 用 git init、git status、git add、git commit、git log 建立並管理第一個本機儲存庫
為什麼需要版本控制
寫程式的時候,你是不是也存過 作業_v2.py、作業_final.py、作業_final_真的最終版.py?
版本控制系統(Version Control System,VCS)幫你把這件事做好:
- 記錄每一次修改的歷程:誰、在什麼時候、改了什麼、為什麼改
- 改壞了可以輕鬆回到之前的版本
- 多人協作時,每個人的修改可以合併在一起,而不會互相覆蓋
Git 是目前最普及的版本控制工具,由 Linux 核心的開發者 Linus Torvalds 在 2005 年開發。它的特色:
| 特色 | 說明 |
|---|---|
| 分散式 | 每個人的電腦上都有完整的版本庫,不用擔心伺服器上的檔案遺失 |
| 不需要網路 | 在本機就能提交版本,之後再連線同步 |
| 開放原始碼 | 免費、跨平台,對版本庫的瀏覽與修改沒有限制 |
| 快速、支援分支 | 大型專案也很快,可以自由開分支開發,再合併回來 |
GitHub 則是全球最大的 Git 雲端服務:把本機的版本庫放上去備份、分享、協作。 Git 是工具,GitHub 是放版本庫的網站,兩者不一樣。
Git 的四大區塊與三種狀態
Git 把你的專案分成四個區塊,檔案會在它們之間移動:
| 區塊 | 說明 | 移到下一區的指令 |
|---|---|---|
| 工作目錄(Working directory) | 你實際編輯檔案的資料夾 | git add |
| 預存區(Staging area) | 準備放進下一個版本的檔案快照 | git commit |
| 本機儲存庫(Git directory) | 專案資料夾裡的 .git 隱藏目錄,存放所有版本 |
git push |
| 遠端儲存庫(Remote repository) | 例如 GitHub 上的版本庫 | git pull 拿回本機 |
被 Git 追蹤的檔案有三種狀態:
- 已修改(modified):檔案改過了,但還沒放進預存區
- 已預存(staged):已經
git add,會被放進下一次提交的快照 - 已提交(committed):已經安全地存進本機儲存庫
還沒被 Git 追蹤的新檔案叫做未追蹤(untracked)。基本工作流程就是:
在工作目錄修改檔案 → git add 預存 → git commit 提交。接下來的導覽會實際走一遍。
安裝 Git 與初次設定
先安裝 Git:Windows 到 git-scm.com 下載 Git for Windows(會附 Git Bash 終端機);macOS 在終端機輸入 git,系統會引導安裝;Ubuntu 用 sudo apt install git。裝好之後打開終端機,跟著下面幾步設定。
-
1
確認 Git 版本
輸入
git --version,看到版本號碼就表示安裝成功。 -
2
設定你的名字與 Email
每一次提交都會記錄是誰做的修改(像是在版本上簽名)。名字可以用暱稱,不一定要和 GitHub 帳號相同;Email 建議和 GitHub 帳號使用同一個。
--global表示這台電腦上的所有專案都用這組設定。 -
3
把預設分支名稱設為 main
新建的儲存庫預設分支以前叫
master,現在 GitHub 預設用main。先設定好,之後兩邊就一致。你在舊教材或舊專案看到master,意思是一樣的。 -
4
檢查設定
git config --list列出目前的所有設定,確認名字與 Email 有沒有打錯。
建立第一個儲存庫並提交
這一段走完「init → status → add → commit → log」的完整流程。每做一步就用 git status 看看檔案的狀態變了沒,這是學 Git 最好的習慣。(範例使用 Git Bash 或 macOS 終端機的指令。)
-
1
建立資料夾並初始化
git init會在目前的資料夾裡建立一個.git隱藏目錄,從此這個資料夾就是一個 Git 儲存庫。一個專案只需要 init 一次。 -
2
查看狀態:還沒有任何提交
git status告訴你目前在哪個分支、有哪些檔案改過。現在資料夾是空的,所以沒有東西可以提交。 -
3
新增檔案:未追蹤(untracked)
建立一個
README.md(用 VS Code 新增也可以)。再看一次狀態,它出現在 Untracked files:Git 看到了,但還沒開始追蹤。 -
4
git add:放進預存區(staged)
git add .把目前資料夾裡所有新增、修改、刪除的檔案放進預存區(.代表目前資料夾)。狀態變成 Changes to be committed。只想加一個檔案時,可以寫git add README.md。 -
5
git commit:存成一個版本(committed)
git commit -m "訊息"把預存區的快照永久存進儲存庫。訊息要簡短說明「這次改了什麼」,以後回頭找版本全靠它。輸出中的3f2a1c9是這個版本的代號(雜湊值的前幾碼)。 -
6
git log:查看版本歷史
git log列出所有提交:版本代號、作者、時間與訊息。HEAD -> main表示你目前在 main 分支的這個版本上。按q離開。
想一想:檔案狀態與基本流程
你新增了 app.py 並執行 git add app.py,還沒有 commit。這時 app.py 處於哪個狀態?
git init 做了什麼事?
第一次使用 Git,為什麼要先執行 git config --global user.name 與 user.email?
重點精華回顧
- 版本控制記錄每一次修改,可以回到舊版本,也讓多人協作不互相覆蓋。Git 是工具,GitHub 是放版本庫的雲端服務。
- 四大區塊:工作目錄 →(
git add)→ 預存區 →(git commit)→ 本機儲存庫 →(git push)→ 遠端儲存庫。 - 檔案狀態:未追蹤、已修改、已預存、已提交;隨時用
git status確認。 - 初次設定:
git config --global user.name、user.email,用git config --list檢查。 git init建立儲存庫,git add放進預存區,git commit -m "說明"存成版本,git log看歷史。