目录
[1. 安装与全局配置(仅首次执行)](#1. 安装与全局配置(仅首次执行))
[2. 密钥配置(免输账号密码,必配)](#2. 密钥配置(免输账号密码,必配))
[方案 1:极简团队(中小项目、敏捷开发)](#方案 1:极简团队(中小项目、敏捷开发))
[方案 2:GitFlow(大型项目、版本迭代严格)](#方案 2:GitFlow(大型项目、版本迭代严格))
[场景 1:首次拉取项目(新入职 / 新电脑)](#场景 1:首次拉取项目(新入职 / 新电脑))
[场景 2:新建功能分支(开始开发新需求)](#场景 2:新建功能分支(开始开发新需求))
[场景 3:本地开发 + 日常提交(高频操作)](#场景 3:本地开发 + 日常提交(高频操作))
[补充:提交注释规范(企业通用 Conventional Commits)](#补充:提交注释规范(企业通用 Conventional Commits))
[场景 4:开发中途,同步远程最新代码(关键!防大冲突)](#场景 4:开发中途,同步远程最新代码(关键!防大冲突))
[场景 5:功能开发完成,推送到远程分支](#场景 5:功能开发完成,推送到远程分支)
[场景 6:远程提 Merge Request / Pull Request(MR/PR)](#场景 6:远程提 Merge Request / Pull Request(MR/PR))
[场景 7:分支合并完成,清理本地无用分支](#场景 7:分支合并完成,清理本地无用分支)
[1. 冲突文件标识](#1. 冲突文件标识)
[2. 解决步骤(3 步标准操作)](#2. 解决步骤(3 步标准操作))
[3. 避坑原则](#3. 避坑原则)
[1. 分支操作](#1. 分支操作)
[2. 回退 / 撤销(救急命令,必背)](#2. 回退 / 撤销(救急命令,必背))
[(2)撤销暂存(add 之后,不想提交了)](#(2)撤销暂存(add 之后,不想提交了))
[(3)本地 commit 提交错了,撤销本次提交(代码保留)](#(3)本地 commit 提交错了,撤销本次提交(代码保留))
[(4)远程分支代码回滚(线上出 bug,紧急回退版本)](#(4)远程分支代码回滚(线上出 bug,紧急回退版本))
[3. 拉代码相关](#3. 拉代码相关)
[4. 查看日志](#4. 查看日志)
[七、团队协作禁忌 & 职场避坑(红线)](#七、团队协作禁忌 & 职场避坑(红线))
[1. 提示 fatal: unable to access 密码错误](#1. 提示 fatal: unable to access 密码错误)
[2. 分支落后远程,push 失败](#2. 分支落后远程,push 失败)
[3. 误删文件,想恢复](#3. 误删文件,想恢复)
[4. 本地分支和远程分支断联](#4. 本地分支和远程分支断联)
结合团队协作流程、日常操作、分支规范、冲突解决、高频问题、避坑技巧讲解,覆盖单人开发、多人协作、代码提交流程、线上回滚等全场景。
一、前置基础:环境与配置
1. 安装与全局配置(仅首次执行)
配置用户名、邮箱(和公司 Git 账号一致,用于提交记录追溯)
# 设置全局用户名
git config --global user.name "你的姓名/工号"
# 设置全局邮箱(公司邮箱/Git平台注册邮箱)
git config --global user.email "xxx@company.com"
# 查看配置
git config --global --list
2. 密钥配置(免输账号密码,必配)
公司 GitLab/Gitee/GitHub 推荐使用 SSH 密钥,避免每次拉取 / 推送输入密码:
- 生成密钥:
ssh-keygen -t ed25519(一路回车) - 查看公钥:
cat ~/.ssh/id_ed25519.pub - 复制全部内容,粘贴到 Git 平台「个人设置 - SSH 公钥」
配置完成后,仓库地址选择 SSH 地址 克隆。
二、核心概念(职场必懂)
- 工作区:本地文件夹,正在编写代码的地方
- 暂存区 (Stage):临时存放待提交的文件
- 本地仓库 :本地
.git目录,保存所有历史版本 - 远程仓库:云端仓库(GitLab/Gitee/GitHub)
- 分支:独立开发线,团队协作核心(主干、功能分支、bug 分支)
三、团队标准分支规范(企业通用)
统一分支规则是团队不乱的前提,主流两套规范,二选一即可:
方案 1:极简团队(中小项目、敏捷开发)
main/master:主干分支,永远保留可上线稳定代码,禁止直接提交dev:开发分支,所有功能合并到此,测试通过后合并到主干feature/xxx:功能分支 ,单人 / 小组开发新功能,例:feature/user-loginbugfix/xxx:修复分支 ,线上 / 测试环境 bug 修复,例:bugfix/order-pay-errorhotfix/xxx:紧急热更分支,线上严重故障,紧急修复上线
方案 2:GitFlow(大型项目、版本迭代严格)
多 release 预发布分支,适合正式版本迭代,大厂后端常用。
职场铁律:严禁直接在 main/dev 分支写代码、提交代码。
四、完整工作流(日常开发标准流程)
以「从拉代码 → 开发 → 提交 → 合并 → 上线」全流程演示。
场景 1:首次拉取项目(新入职 / 新电脑)
# 1. 克隆远程仓库到本地(SSH地址)
git clone git@xxx.git
# 2. 进入项目文件夹
cd 项目名
# 3. 拉取最新 dev 分支(以dev为开发基线)
git checkout dev
git pull
场景 2:新建功能分支(开始开发新需求)
基于最新 dev 分支创建个人功能分支
# 确保当前在 dev,并且代码是最新
git checkout dev
git pull
# 创建并切换到功能分支(推荐命名:feature/功能名)
git checkout -b feature/order-cart
场景 3:本地开发 + 日常提交(高频操作)
写完代码后,分步提交,小步提交、频繁提交(不要一次改几百行再提交)
# 1. 查看文件改动(红色=未暂存,绿色=已暂存)
git status
# 2. 将改动文件加入暂存区
# 方式1:添加所有改动(常用)
git add .
# 方式2:指定单个文件(谨慎提交,精准控制)
git add src/xxx.java
# 3. 提交到本地仓库,必须写清晰注释(规范:动作+内容)
# 格式建议:feat: 新增购物车接口 | fix: 修复结算bug
git commit -m "feat: 完成购物车新增、查询功能"
补充:提交注释规范(企业通用 Conventional Commits)
feat:新功能fix:bug 修复docs:文档修改style:代码格式、空格(无逻辑变更)refactor:代码重构(无功能、无 bug)test:新增 / 修改测试用例
场景 4:开发中途,同步远程最新代码(关键!防大冲突)
多人同时开发,dev 分支会不断更新,每天上班第一件事同步代码:
# 1. 切回dev拉最新代码
git checkout dev
git pull
# 2. 切回自己的功能分支,合并dev最新代码(把别人的更新合进来)
git checkout feature/order-cart
git merge dev
这里大概率出现代码冲突,下文单独讲解。
场景 5:功能开发完成,推送到远程分支
# 推送到远程对应分支(首次推送需要加 -u 关联远程分支)
git push -u origin feature/order-cart
# 后续再次提交,直接简写
git push
场景 6:远程提 Merge Request / Pull Request(MR/PR)
- 登录 GitLab/Gitee 网页端,选择自己的分支
- 新建 Merge Request :目标分支选择
dev - 填写标题、描述、关联需求 / 缺陷单号,提交
- 等待代码评审 (CR):同事审核代码,提出修改意见
- 评审通过后,管理员合并到
dev分支
场景 7:分支合并完成,清理本地无用分支
功能上线、合并完毕后,删除本地 + 远程废弃分支:
# 删除本地分支
git branch -d feature/order-cart
# 删除远程分支
git push origin --delete feature/order-cart
五、重中之重:代码冲突解决(职场最常见问题)
多人修改同一文件同一行代码 就会产生冲突,merge/pull 都会触发。
1. 冲突文件标识
打开冲突文件,会看到 Git 标记:
<<<<<<< HEAD (本地当前分支代码)
本地写的代码
=======
远程/被合并分支的代码
>>>>>>> dev (来源分支代码)
2. 解决步骤(3 步标准操作)
-
理解两边代码逻辑:不要直接删除,先问同事这段代码作用
-
手动修改代码 :保留需要的逻辑,删除
<<<<<<=====>>>>>>标记 -
重新暂存、提交:
git add .
git commit -m "merge: 解决合并dev产生的代码冲突"无需再次pull,直接推送
git push
3. 避坑原则
- 小冲突:本地手动解决
- 大冲突 / 逻辑复杂:当面和代码作者沟通,不要凭猜测改
- 禁止:直接全保留本地 / 全覆盖远程
六、高频实用命令(工作每天都用)
1. 分支操作
# 查看本地所有分支(* 代表当前所在分支)
git branch
# 查看远程所有分支
git branch -r
# 切换分支
git checkout 分支名
# Git 2.23+ 新命令(等价)
git switch 分支名
# 创建分支(不切换)
git branch 新分支名
2. 回退 / 撤销(救急命令,必背)
(1)撤销工作区改动(代码改乱了,想恢复成原版)
# 撤销单个文件
git checkout -- 文件名
# 撤销所有未暂存的改动
git checkout -- .
(2)撤销暂存(add 之后,不想提交了)
git reset HEAD .
(3)本地 commit 提交错了,撤销本次提交(代码保留)
# 软回退:撤销commit,代码还在工作区(常用)
git reset --soft HEAD~1
# 硬回退:撤销commit + 清空代码(危险!谨慎使用)
git reset --hard HEAD~1
(4)远程分支代码回滚(线上出 bug,紧急回退版本)
仅管理员操作,禁止普通开发直接操作主干
# 1. 查看所有提交记录,找到要回退的commit id
git log
# 2. 本地硬回退到指定版本
git reset --hard 目标commit-id
# 3. 强制推送到远程(高危!团队同步后再执行)
git push origin main --force
3. 拉代码相关
# 拉取远程最新代码(推荐日常使用)
git pull
# 等价于:git fetch + git merge
# git fetch:只拉取代码,不自动合并(安全,推荐先fetch再手动merge)
git fetch
4. 查看日志
# 查看详细提交日志
git log
# 简洁单行日志(看分支线神器)
git log --oneline --graph
七、团队协作禁忌 & 职场避坑(红线)
-
绝对禁止 :直接在
main/dev主干分支开发、提交代码 -
绝对禁止 :使用
git push --force强制推送公共分支(会覆盖别人代码) -
禁止:一次提交大量代码、不写提交注释
-
禁止 :把 IDE 配置、日志、临时文件、密钥、密码提交到仓库
-
解决方案:项目根目录新建
.gitignore文件,配置忽略规则.gitignore 常用配置
*.iml
.idea/
target/
logs/
*.log
node_modules/
application-dev.yml # 本地配置文件
-
-
每天上班先 pull 再开发,下班前保证代码正常提交推送
-
代码写完先自测,再提 MR,减少评审返工
八、常见异常问题排查
1. 提示 fatal: unable to access 密码错误
- 解决方案:改用 SSH 地址 克隆,配置 SSH 密钥,彻底解决密码问题
2. 分支落后远程,push 失败
原因:远程有新代码,本地未同步
# 先拉最新代码,再推送
git pull
git push
3. 误删文件,想恢复
# 查看删除记录,找到commit
git log --oneline -- 文件名
# 恢复文件
git checkout commit-id 文件名
4. 本地分支和远程分支断联
# 重新关联远程分支
git branch --set-upstream-to=origin/远程分支名 本地分支名
九、极简每日工作流程(速记版)
- 上班:
git checkout dev→git pull同步最新代码 - 切自己分支:
git checkout feature/xxx→git merge dev合并更新 - 开发代码
- 提交:
git add .→git commit -m "注释"→git push - 开发完毕:网页提 MR,等待代码评审合并
- 合并完成:删除本地废弃分支