平行開發、整合與衝突 — Branches & Merge
多人開發不可能都直接改 main。用分支(branch)各自開發,再合併(merge)回主線—— 這是 Git 最重要的設計。
分支是「平行開發的軌道」:每個分支有各自的歷史,互不干擾,最後再合併。
main: o──o──────────o──────o
\ / 合併
feature: o──o──o
主線(main)永遠是「穩定可用」;功能在 feature 開發,完成後合併回 main。
git branch feature-login # 建立分支 git checkout feature-login # 切換到該分支 git checkout -b feature-x # 建立並切換(最常用) git branch # 列出所有分支 git branch -d feature-x # 刪除分支
feature/login、fix/typo、
chore/deps——一看就知道這條分支在幹嘛。
把某分支的變更併進目前所在分支。
git checkout main # 回到主線 git pull # 先取得最新 git merge feature-login # 把功能分支合併進來 git push # 上傳合併結果
團隊協作時,動手前先 git pull 拿別人推的新東西。
git pull = git fetch + git merge fetch:把 GitHub 的資料抓下來 merge:併入你的目前分支
git pull,能大幅減少後面的衝突。
當兩邊改了同一行程式碼,Git 不知道該留哪邊,就會產生衝突——需要你手動解決。
<<<<<<< HEAD # 目前分支的版本 price = 100 ======= # 分隔線 price = 120 >>>>>>> feature-x # 被合併分支的版本
解決步驟:
<<< >>> 標記。git add 該檔案 → git commit 完成合併。把本地分支推到 GitHub:
git push -u origin feature-login # 第一次推新分支 git push # 之後直接推
推到 GitHub 後,下一步通常就是開一個 Pull Request——下一單元的主題。