什么是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官方文档,逐步熟悉命令的用法~

小夜