一、前置准备:环境配置与仓库关联
1. 基础环境校验
bash
# 检查Git是否安装成功(Windows需先打开CMD/终端)
git --version
2. 全局用户配置(提交代码时标识身份)
bash
git config --global user.name "你的姓名/用户名"
git config --global user.email "你的工作邮箱"
# 验证配置是否生效
git config --list
3. 远程仓库关联(首次参与项目)
bash
# 方式1:直接克隆远程仓库到本地(推荐,自动关联远程)
git clone 项目远程仓库地址(如码云/GitHub地址)
# 方式2:本地已有项目,关联远程仓库
git init # 若本地未初始化仓库
git remote add origin 项目远程仓库地址
# 验证远程关联是否成功(查看fetch/push地址)
git remote -v
二、核心协作流程:日常开发高频操作
1. 每日开发前:拉取最新代码(避免冲突)
bash
# 切换到开发主分支(通常为develop,根据项目约定调整)
git switch develop # Git 2.23+版本,老版本用 git checkout develop
# 拉取远程最新更新并合并(高频核心指令,等价于git fetch + git merge)
git pull origin develop
2. 功能开发:创建专属分支(隔离开发环境)
bash
# 规则:功能分支命名规范→feature/功能名称-开发者(如feature/user-login-zhangsan)
# 1. 创建并切换到功能分支(基于最新develop分支)
git switch -c feature/功能名称-你的名字 # 快捷指令,等价于git branch + git switch
# 2. 开发中实时查看文件状态(高频校验)
git status # 红色=工作区未暂存;绿色=暂存区待提交;无颜色=已提交到本地仓库
3. 代码提交:本地版本管理(高频核心步骤)
bash
# 步骤1:将工作区所有修改添加到暂存区(. 表示递归当前目录)
git add . # 仅添加指定文件用:git add 文件名/目录名
# 步骤2:提交到本地仓库(必须写清晰注释,便于追溯)
# 注释规范:类型: 描述(如feat: 新增用户登录功能;fix: 修复登录按钮失效bug)
git commit -m "feat: 新增个人中心数据展示模块"
# 可选:修改最近一次提交(未推送到远程时适用)
git commit --amend # 补充注释或修正暂存内容,不新增提交记录
4. 功能完成:推送分支到远程(提交审核)
bash
# 首次推送该分支到远程(-u 关联本地与远程分支,后续可直接git push)
git push -u origin feature/功能名称-你的名字
# 非首次推送(已关联远程分支后)
git push
5. 代码审核通过后:合并分支(管理员/主开发者操作)
bash
# 1. 切换到开发主分支
git switch develop
# 2. 拉取最新远程更新(避免合并时冲突)
git pull origin develop
# 3. 合并功能分支到主分支
git merge feature/功能名称-你的名字 --no-ff # --no-ff保留分支合并记录,便于回溯
# 4. 推送合并后的主分支到远程
git push origin develop
# 5. 合并完成后,删除本地功能分支(清理无用分支)
git branch -d feature/功能名称-你的名字
# 6. 删除远程功能分支(可选,项目统一清理时操作)
git push origin --delete feature/功能名称-你的名字
三、分支管理规范(团队必守)
| 分支类型 | 命名规则 | 用途说明 | 操作限制 |
|---|---|---|---|
| 主分支 | main/master | 存放生产环境代码,禁止直接提交 | 仅通过合并develop更新 |
| 开发主分支 | develop | 团队协作主分支,所有功能分支基于此创建 | 禁止直接提交代码 |
| 功能分支 | feature/功能名-开发者 | 单个功能开发隔离 | 仅开发者本人推送更新 |
| 紧急修复分支 | hotfix/问题描述 | 生产环境紧急bug修复 | 修复后合并到main+develop |
四、高频问题解决:冲突处理与应急操作
1. 拉取/合并时出现冲突(最常见场景)
bash
# 1. 冲突发生时,Git会提示"Automatic merge failed",先查看冲突文件
git status # 冲突文件会标记为"both modified"
# 2. 打开冲突文件,查找冲突标记并修改
# 冲突标记格式:
# <<<<<<< HEAD(当前分支内容)
# 你的代码
# =======
# 待合并分支的代码
# >>>>>>> feature/xxx(冲突分支)
# 3. 修改完成后,重新提交
git add . # 标记冲突已解决
git commit -m "fix: 解决与develop分支的冲突(冲突文件:xxx.js)"
git push # 推送解决后的代码
2. 开发中需切换分支(未完成的代码暂存)
bash
# 1. 暂存当前工作区修改(临时保存未提交内容)
git stash
# 2. 切换到目标分支(如处理紧急bug)
git switch hotfix/紧急问题描述
# 3. 处理完成后,切回原功能分支,恢复暂存内容
git switch feature/功能名称-你的名字
git stash pop # 恢复最近一次暂存,同时删除该暂存记录
# 查看所有暂存记录(若有多条暂存)
git stash list
# 恢复指定暂存(stash-id从list中获取,如stash@{0})
git stash apply stash@{0}
3. 提交错误后:回滚与撤销操作
bash
# 场景1:已提交到本地仓库,未推送到远程(回滚到指定版本)
# 第一步:查看提交历史(获取目标版本号,前7位即可)
git log --oneline # 简洁显示:版本号+提交注释
# 第二步:回滚到指定版本(--hard会丢弃当前工作区/暂存区修改,谨慎使用)
git reset --hard 目标版本号(如a1b2c3d)
# 场景2:已添加到暂存区,想取消暂存
git restore --staged 文件名 # 老版本用:git reset HEAD 文件名
# 场景3:工作区修改错误,想放弃修改(恢复到最近一次提交状态)
git restore 文件名 # 老版本用:git checkout -- 文件名
4. 推送失败:远程分支有更新
bash
# 解决:先拉取远程更新,合并后再推送
git pull origin 你的分支名
# 若拉取后出现冲突,按「冲突处理」步骤解决,再执行git push
5.分支原因分析
json
git push origin --delete feature
若错误提示,远程仓库上不存在名为 feature 的分支,无法删除。
1. 更新远程分支信息
首先同步最新的远程分支状态:
bash
git fetch --prune
这条命令会:
- 获取远程仓库最新的分支信息
- 自动删除本地已经不存在于远程的远程跟踪分支
2. 检查当前远程分支
查看目前实际存在的远程分支:
bash
git branch -r
3. 如果你想删除其他分支
bash
git push origin --delete front_end
或者检查确切的分支名称后再删除。
4. 清理本地缓存(如果需要)
如果 origin/feature 这个已删除的分支,仍然显示在本地:
bash
git remote prune origin
五、团队协作禁忌与规范
- 提交规范 :commit注释必须清晰,格式统一为「类型: 描述」
- 类型可选:feat(功能新增)、fix(bug修复)、docs(文档更新)、style(格式调整)、refactor(代码重构)
- 分支规范:禁止直接在main/develop分支提交代码,所有开发必须在功能分支进行
- 冲突处理:每日至少拉取1次develop分支更新,避免长时间不同步导致复杂冲突
- 安全操作 :使用
git reset --hard前,确保未推送的修改已备份;删除分支前确认已合并 - 忽略文件 :项目根目录创建
.gitignore,配置无需版本控制的文件(如node_modules/、*.log、IDE配置文件)
六、高频指令速查表
| 操作目的 | 指令代码 |
|---|---|
| 查看分支列表 | git branch(本地)/ git branch -a(所有) |
| 切换分支 | git switch 分支名 |
| 创建并切换分支 | git switch -c 新分支名 |
| 拉取远程分支更新 | git pull origin 分支名 |
| 推送本地分支到远程 | git push(已关联)/ git push -u origin 分支名(首次) |
| 查看提交历史 | git log --oneline |
| 暂存工作区修改 | git stash |
| 恢复暂存修改 | git stash pop |
| 查看远程关联信息 | git remote -v |
| 检查文件是否被忽略 | git check-ignore -v 文件名 |