
Git 從新手到專業:從 git init 到連上 GitHub 的學習心得
· #Git #GitHub #版本控制 #學習筆記
這篇是用「學習者」的角度整理 Git 的心得筆記。目標不是背指令,而是把「為什麼要這樣做」搞清楚——從 git init 建立第一個版本庫,一路走到把專案推上 GitHub。學會之後你會發現,Git 其實就兩件事:追蹤變化 與 同步協作。
一、為什麼要學 Git?
一開始最困惑的一點:明明檔案直接存就好,為什麼要有版本控制?
核心概念:Git 不是「存檔案」,是「記錄每一次變化」。
- 隨時回到任何一個歷史版本(救回被我改壞的程式碼)
- 並行開發(多人各自的分支,最後合併)
- 備份與協作(GitHub 讓「本地」變成「可以共享 + 追蹤歷史」)
二、從 git init 開始
在一個資料夾裡建立版本庫:
git init
這會在資料夾內產生隱藏的 .git/ 目錄——它就是「版本的資料庫」。此時你有了本地版本控制能力。
心得:
git init只是起點;真正開始「有用的管理」,是當你開始add+commit之後。
三、最常用的基本流程(每日循環)
git status # 看現在有什麼變化(新手第一個一定要會)
git add <檔案> # 把檔案加入「暫存區」→ 準備提交
git add . # 加入所有變更(小心:可能加進不該加的)
git commit -m "描述你改了什麼" # 拍一張「版本快照」
git log --oneline # 看提交歷史(每次改動一行)
git diff # 看還沒暫存的差異
工作流程的心智模型:
工作目錄 ──add──> 暫存區(staging)──commit──> 版本歷史
新手最常困惑「為何要分成 add 和 commit 兩步?」——這是 Git 的優雅之處:你可以只挑選「一部分」檔案進這次提交,讓每個 commit 都乾淨、可敘述(例如這個 commit 只修 bug A)。
四、.gitignore:永遠不要提交無關檔案
把不該進版本庫的檔案(暫存檔、套件目錄、密鑰、本機設定)寫進 .gitignore:
node_modules/
.tmp/
*.log
.env
心得:
node_modules/這類超大目錄一旦誤 commit,歷史永遠留住它,專案會變重。越早設.gitignore越好。
五、分支:並行世界的開始
Git 最強、也讓很多新手卻步的就是分支:
git branch <名稱> # 建立分支
git checkout <名稱> # 切換過去(新版也可用 git switch)
git checkout -b <名稱> # 建立並切換(最常用)
git branch # 列出分支
git merge <來源分支> # 把別支合進目前這支
心智模型:分支是一條獨立的時間線。你在 feature 分支改東西,完全不影響 main;整合時才 merge。
六、衝突:請不用怕,正常現象
兩個人都改了同一處,merge 或 pull 時 Git 會標記「衝突」:
<<<<<<< HEAD
我的改法
=======
別人的改法
>>>>>>> feature
解法:手動挑選/合併後,刪掉標記,再 git add + git commit。
心得:衝突不是 Git 壞了,是它誠實告訴你「兩邊都改了,請你決定」。頻繁 commit、小的改動、常同步,能大幅減少衝突機率。
七、連上 GitHub(從本地到雲端)
这是把本地專案同步到 GitHub 的關鍵步驟:
# 1. 在 GitHub 開一個空 repo(不要勾 README,避免衝突),複製它的網址
# 2. 設遠端
git remote add origin https://github.com/<你的帳號>/<專案名>.git
# 3. 把主分支送去 GitHub
git push -u origin main
# 4. 日後同步
git push # 上傳我的變化
git pull # 拉取別人的變化(= fetch + merge)
鑑定連線方式:SSH vs HTTPS
- HTTPS:用 Personal Access Token(GitHub → Settings → Developer settings → Personal access tokens)當密碼。簡單,適合第一個專案。
- SSH:產生金鑰
ssh-keygen,把公鑰加到 GitHub,之後免密碼、較安全。長期的做法。
ssh-keygen -t ed25519 -C "你的email"
cat ~/.ssh/id_ed25519.pub # 複製內容 → GitHub → SSH keys 貼上
常見卡點:
git push一直被要求認證/被拒——多半是 (a) 用錯 token 或權限不足,(b) 本機 git 帳號 email 沒設。先檢查:git config --global user.name "你的名字" git config --global user.email "你的email"
八、從無到有:clone 別人的專案
git clone <網址> # 整包複製下來
cd <專案> && git branch -a # 看所有分支
git pull # 之後同步最新
九、學習心得總結
- Git 的思維不是「存檔」,是「分支的變化歷史」——想通這點,一切指令都合理了。
- 每天
git status+ 合理commit:每次提交要「能說得清在幹嘛」,這是職業習慣。 add前先想想:避免 commit 進.env、密鑰或大檔案。- 分支免費,多用:想實驗就開分支,失敗就刪掉,main 永遠乾淨。
- sync 要勤:
pull再push,「推送前先拉」是專業與新手的差別。 - 衝突、rebase、force push 都還先求會、再求懂:新手把「會 commit / push / pull / branch / merge」練熟,就已勝過多數人。
建議練法
用「一天一個小目標」建立手感:
- Day 1:
git init→ 改檔 →status/add/commit/log - Day 2:
.gitignore+git diff+git log --oneline - Day 3:branch/merge/一次衝突實作
- Day 4:推上 GitHub(HTTPS token)
- Day 5:SSH 免密+clone 一份來回同步
「從新手到專業」的路,其實是把 Git 從「會下指令」變成「養成習慣」——多動手、多回看歷史,自然就熟了。