工作中 Git 完整使用指南(职场实战版)

目录

一、前置基础:环境与配置

[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. 回退 / 撤销(救急命令,必背))

(1)撤销工作区改动(代码改乱了,想恢复成原版)

[(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 密钥,避免每次拉取 / 推送输入密码:

  1. 生成密钥:ssh-keygen -t ed25519(一路回车)
  2. 查看公钥:cat ~/.ssh/id_ed25519.pub
  3. 复制全部内容,粘贴到 Git 平台「个人设置 - SSH 公钥」

配置完成后,仓库地址选择 SSH 地址 克隆。


二、核心概念(职场必懂)

  1. 工作区:本地文件夹,正在编写代码的地方
  2. 暂存区 (Stage):临时存放待提交的文件
  3. 本地仓库 :本地 .git 目录,保存所有历史版本
  4. 远程仓库:云端仓库(GitLab/Gitee/GitHub)
  5. 分支:独立开发线,团队协作核心(主干、功能分支、bug 分支)

三、团队标准分支规范(企业通用)

统一分支规则是团队不乱的前提,主流两套规范,二选一即可:

方案 1:极简团队(中小项目、敏捷开发)

  • main/master主干分支,永远保留可上线稳定代码,禁止直接提交
  • dev开发分支,所有功能合并到此,测试通过后合并到主干
  • feature/xxx功能分支 ,单人 / 小组开发新功能,例:feature/user-login
  • bugfix/xxx修复分支 ,线上 / 测试环境 bug 修复,例:bugfix/order-pay-error
  • hotfix/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)

  1. 登录 GitLab/Gitee 网页端,选择自己的分支
  2. 新建 Merge Request :目标分支选择 dev
  3. 填写标题、描述、关联需求 / 缺陷单号,提交
  4. 等待代码评审 (CR):同事审核代码,提出修改意见
  5. 评审通过后,管理员合并到 dev 分支

场景 7:分支合并完成,清理本地无用分支

功能上线、合并完毕后,删除本地 + 远程废弃分支:

复制代码
# 删除本地分支
git branch -d feature/order-cart

# 删除远程分支
git push origin --delete feature/order-cart

五、重中之重:代码冲突解决(职场最常见问题)

多人修改同一文件同一行代码 就会产生冲突,merge/pull 都会触发。

1. 冲突文件标识

打开冲突文件,会看到 Git 标记:

复制代码
<<<<<<< HEAD (本地当前分支代码)
本地写的代码
=======
远程/被合并分支的代码
>>>>>>> dev (来源分支代码)

2. 解决步骤(3 步标准操作)

  1. 理解两边代码逻辑:不要直接删除,先问同事这段代码作用

  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

七、团队协作禁忌 & 职场避坑(红线)

  1. 绝对禁止 :直接在 main / dev 主干分支开发、提交代码

  2. 绝对禁止 :使用 git push --force 强制推送公共分支(会覆盖别人代码)

  3. 禁止:一次提交大量代码、不写提交注释

  4. 禁止 :把 IDE 配置、日志、临时文件、密钥、密码提交到仓库

    • 解决方案:项目根目录新建 .gitignore 文件,配置忽略规则

      .gitignore 常用配置

      *.iml
      .idea/
      target/
      logs/
      *.log
      node_modules/
      application-dev.yml # 本地配置文件

  5. 每天上班先 pull 再开发,下班前保证代码正常提交推送

  6. 代码写完先自测,再提 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/远程分支名 本地分支名

九、极简每日工作流程(速记版)

  1. 上班:git checkout devgit pull 同步最新代码
  2. 切自己分支:git checkout feature/xxxgit merge dev 合并更新
  3. 开发代码
  4. 提交:git add .git commit -m "注释"git push
  5. 开发完毕:网页提 MR,等待代码评审合并
  6. 合并完成:删除本地废弃分支
相关推荐
Ws_1 小时前
Git + Gerrit 第七课:stash 临时保存工作区修改
git
enjoywindstorm2 小时前
git从入门到精通
git
Adorable老犀牛6 小时前
Git 发布正式版本的一个专属的硬核功能,叫做 打标签(Tag)。
git
我先去打把游戏先7 小时前
Ubuntu虚拟机(服务器版本)Git卸载完全教程——彻底移除与清理配置
服务器·git·单片机·嵌入式硬件·物联网·ubuntu·51单片机
不做无法实现的梦~9 小时前
Git Clone 使用 Watt/Steam++ 加速时报证书错误的原因与解决方法
大数据·git·elasticsearch
黑猫警长丶10 小时前
Git 操作笔记
笔记·git
MageGojo10 小时前
Whois 域名查询 API 接入实战:用一个 GET 请求获取域名注册信息
java·git·github
黑猫警长丶10 小时前
Git 本地操作基础
git
白狐_79810 小时前
从功能开发到开源维护:一个 Python 可视化项目的 Git 分支、维护文件与 PR 流程实践
git·python·开源