什麼是Git工作流?

在多人協作開發中,Git不僅是一個版本控制工具,更是團隊協作的“交通規則”。工作流(Workflow)就是大家約定好的一套提交代碼、合併分支、管理版本的規則。它能讓代碼提交有序、追蹤問題簡單,避免多人同時修改同一文件導致的混亂。

常用分支策略(簡化版)

對於初學者,最推薦的是簡化版Git Flow,核心思想是:
- 主分支(通常叫mainmaster):永遠保持可部署的穩定代碼,只接受合併完成的功能。
- 功能分支:從主分支創建,用於開發新功能或修復bug,每個功能獨立一個分支。
- 合併規則:功能完成後,通過合併到主分支發佈,合併前需測試。

必學基礎命令(附場景)

命令 作用 場景舉例
git clone <倉庫地址> 克隆遠程倉庫到本地 第一次獲取項目代碼
git checkout -b <分支名> 創建並切換到新分支 創建功能分支:git checkout -b feature/login
git add . 將修改的文件暫存 開發完代碼後,先暫存所有改動
git commit -m "提交信息" 提交暫存的內容 寫清楚改動:git commit -m "完成登錄表單UI"
git status 查看工作區狀態 隨時檢查是否有未提交的改動
git pull origin <主分支> 拉取主分支最新代碼 確保功能分支與主分支同步
git merge <分支名> 合併分支 把功能分支合併到主分支
git push origin <分支名> 推送分支到遠程倉庫 把本地分支推到GitHub/GitLab等平臺

完整工作流步驟(以「開發登錄功能」爲例)

1. 準備工作:確保主分支最新

假設主分支叫main,先確認本地main分支是最新的,避免創建分支時遺漏最新代碼:

# 切換到main分支
git checkout main
# 拉取主分支最新代碼(如果是遠程倉庫)
git pull origin main

2. 創建功能分支

main分支創建一個功能分支(比如開發登錄功能),命名建議:feature/功能名

git checkout -b feature/login

這條命令等價於:git branch feature/login(創建分支)+ git checkout feature/login(切換分支)

3. 開發與提交代碼

feature/login分支上寫代碼,完成後提交:

# 查看改動了哪些文件
git status
# 暫存所有改動(也可以用git add <文件名>單獨暫存)
git add .
# 提交併寫清晰的提交信息
git commit -m "實現登錄表單輸入框和按鈕"

提交信息小技巧:寫清楚“做了什麼”,比如“修復登錄按鈕點擊無反應”“添加驗證碼邏輯”,方便後續回滾或查看歷史。

4. 同步主分支更新(避免衝突)

如果主分支有其他人提交了新代碼(比如修復了主分支的bug),需要把主分支更新拉到功能分支,避免合併時衝突:

# 先切回主分支拉取最新代碼
git checkout main
git pull origin main
# 再切回功能分支,合併主分支更新
git checkout feature/login
git merge main

如果沒有衝突,Git會自動合併;如果有衝突,終端會提示“Automatic merge failed”,見「衝突解決」部分。

5. 推送功能分支到遠程倉庫

功能分支開發完成後,推送到遠程倉庫,方便團隊協作查看:

git push origin feature/login

推送到遠程後,可在GitHub/GitLab的網頁端看到這個分支,此時可發起「合併請求(PR)」到主分支。

6. 合併到主分支(發佈)

團隊代碼審查通過後,將功能分支合併到主分支:
- 本地合併(若直接在終端操作):

  # 切換到主分支
  git checkout main
  # 合併功能分支
  git merge feature/login
  # 推送合併後的主分支到遠程
  git push origin main
  • 通過PR合併(團隊協作更常用):在GitHub/GitLab網頁上,從feature/login分支發起PR,選擇合併到main分支,合併後刪除功能分支。

7. 清理已完成的分支

合併完成後,刪除本地和遠程的功能分支,保持倉庫整潔:

# 刪除本地功能分支
git branch -d feature/login
# 刪除遠程功能分支(推送到遠程)
git push origin --delete feature/login

衝突解決(新手必看)

衝突發生場景:多人同時修改了同一文件的同一行,Git無法自動決定保留哪份代碼。

解決方法
1. Git會提示衝突文件(如login.js),打開文件後找到衝突標記:

   <<<<<<< HEAD(當前分支的代碼)
   const username = "admin";
   =======(分割線)
   const username = "user";
   >>>>>>> feature/login(待合併分支的代碼)
  1. 手動編輯文件,決定保留哪部分代碼(或修改合併邏輯),刪除衝突標記<<<<<<<=======>>>>>>>
  2. 保存文件後,標記爲已解決並提交:
   git add login.js
   git commit -m "解決登錄功能分支與主分支的衝突"

總結與注意事項

  • 分支命名規範:主分支main,功能分支feature/xxx,bug修復分支bugfix/xxx,保持清晰。
  • 提交前檢查:用git status確認改動文件,避免提交不該提交的內容(如臨時文件)。
  • 小步提交:每次只提交“一個小功能”,方便追蹤問題,比如“實現登錄框佈局”“修復密碼框樣式”分開提交。
  • 主分支永遠乾淨:只合並已測試通過的代碼,禁止直接在main分支寫代碼或提交。

掌握這個流程後,你就能用Git高效管理代碼版本,讓團隊協作更順暢。遇到問題時,多查git --help或Git官方文檔,逐步熟悉命令的用法~

小夜