Git 实战场景操作大全(可直接落地)
这份手册聚焦实际开发中高频场景,每个场景都提供「完整操作步骤 + 命令 + 注意事项」,覆盖从日常提交到分支管理、版本发布、问题回滚等全流程,新手也能直接照搬。
一、基础配置(首次使用必做)
场景:初始化 Git 身份(提交记录需绑定邮箱 / 用户名)
bash
# 1. 配置全局用户名和邮箱(所有仓库生效)
git config --global user.name "你的姓名"
git config --global user.email "你的邮箱@xxx.com"
# 2. 验证配置是否生效
git config --global --list
# 3. (可选)配置默认编辑器(比如替换为VSCode)
git config --global core.editor "code --wait"
注意 :如果需要为单个仓库配置不同身份(比如公司 / 个人仓库),去掉 --global 即可,命令在对应仓库目录执行。
二、日常开发核心操作
场景 1:从远程仓库克隆代码(首次拉取项目)
bash
# 1. 克隆仓库(HTTPS方式,无需配置密钥,推荐新手)
git clone https://github.com/用户名/仓库名.git
# 2. (可选)克隆指定分支(默认克隆main/master分支)
git clone -b 分支名 https://github.com/用户名/仓库名.git
# 3. 进入克隆后的项目目录
cd 仓库名
注意:如果是私有仓库,HTTPS 方式会提示输入账号密码;SSH 方式需提前配置密钥(文末附 SSH 配置)。
场景 2:日常开发提交代码(最常用)
完整步骤:拉取最新代码 → 修改代码 → 暂存 → 提交 → 推送
bash
# 1. 先拉取远程最新代码(避免冲突)
git pull origin 当前分支名(如main)
# 2. 查看本地修改状态(确认要提交的文件)
git status
# 3. 暂存修改的文件(两种方式)
git add 文件名/目录名 # 暂存指定文件/目录(推荐,精准控制)
git add . # 暂存所有修改(新增/修改/删除,注意排除无关文件)
# 4. 提交暂存的代码(必须写有意义的提交信息)
git commit -m "feat: 新增用户登录功能 | fix: 修复订单计算bug"
# 5. 推送本地提交到远程仓库
git push origin 当前分支名(如main)
规范:提交信息建议遵循「类型:描述」格式,类型包括:
- feat:新功能
- fix:修复 bug
- docs:文档修改
- style:格式调整(不影响代码逻辑)
- refactor:代码重构
- test:测试代码
- chore:构建 / 工具类修改
常见问题:
- 提交后发现信息写错:
git commit --amend -m "新的提交信息"(未推送前可用) - 暂存后想撤销:
git reset HEAD 文件名(撤销指定文件)/git reset HEAD .(撤销所有)
场景 3:拉取远程最新代码(仅拉取不合并,或强制同步)
bash
# 方式1:拉取并自动合并(日常推荐,即git pull = git fetch + git merge)
git pull origin 分支名
# 方式2:先拉取远程更新(不合并),再手动合并(适合复杂场景)
git fetch origin # 拉取远程所有分支的最新版本
git merge origin/分支名 # 合并到本地当前分支
# 方式3:强制拉取远程代码(覆盖本地修改,慎用!)
git fetch --all
git reset --hard origin/分支名
注意:强制拉取会丢失本地未提交的修改,仅在确认本地修改无用时使用。
三、分支管理(多人协作核心)
场景 1:创建并切换新分支(开发新功能 / 修复 bug)
bash
# 1. 确保当前分支是最新的(基于main创建新分支)
git checkout main
git pull origin main
# 2. 创建并切换到新分支(命名规范:功能/类型-描述,如feat-login、fix-order)
git checkout -b feat-login
# 3. 验证分支是否创建成功
git branch # 列出所有分支,当前分支前有*号
场景 2:推送本地新分支到远程(让同事协作)
bash
# 推送本地feat-login分支到远程,并绑定追踪关系
git push -u origin feat-login
注意 :-u 表示绑定本地分支和远程分支,后续推送只需 git push 即可。
场景 3:切换已有分支(比如从功能分支切回 main)
bash
# 1. 先提交/暂存当前分支的修改(避免切换分支时丢失)
git stash # 暂存未提交的修改(临时保存)
# 2. 切换分支
git checkout main
# 3. (可选)恢复暂存的修改(切回原分支后执行)
git stash pop
注意:如果分支有未暂存的修改,Git 会阻止切换,除非修改的文件在目标分支中不存在。
场景 4:合并分支(功能开发完成,合并到 main)
步骤:切到主分支 → 拉取最新 → 合并功能分支 → 推送
bash
# 1. 切换到主分支
git checkout main
# 2. 拉取主分支最新代码(避免合并时冲突)
git pull origin main
# 3. 合并功能分支到主分支
git merge feat-login
# 4. 解决冲突(如果有)→ 提交合并结果 → 推送
# 冲突解决后:
git add .
git commit -m "merge: 合并登录功能到main分支"
git push origin main
冲突解决技巧:
- Git 会在冲突文件中标记
<<<<<<< HEAD(主分支代码)、=======(功能分支代码)、>>>>>>> feat-login - 手动删除标记,保留正确代码,保存后再提交
场景 5:删除分支(功能合并后清理无用分支)
bash
# 1. 删除本地分支
git branch -d feat-login
# 2. 删除远程分支
git push origin --delete feat-login
注意 :-d 只能删除已合并的分支;如果要强制删除未合并的分支,用 -D(慎用,会丢失代码)。
场景 6:查看分支信息(确认分支关联 / 状态)
bash
# 查看本地所有分支
git branch
# 查看远程所有分支
git branch -r
# 查看所有分支(本地+远程)
git branch -a
# 查看分支提交记录(图形化,更直观)
git log --graph --oneline --all
四、版本发布与 Tag 管理
场景 1:创建 Tag(标记发布版本,如 v1.0.0)
bash
# 1. 确保当前分支是要发布的版本(如main),且代码最新
git checkout main
git pull origin main
# 2. 创建轻量Tag(仅标记版本,无备注,适合内部版本)
git tag v1.0.0
# 3. 创建带备注的Tag(推荐,记录发布内容)
git tag -a v1.0.0 -m "v1.0.0 发布:包含登录、订单功能"
# 4. 查看所有Tag
git tag
# 5. 推送Tag到远程仓库(必须手动推送,否则仅本地可见)
git push origin v1.0.0
# 6. 推送所有本地Tag到远程
git push origin --tags
场景 2:检出 Tag(查看某个版本的代码)
bash
# 1. 查看Tag对应的提交ID
git show v1.0.0
# 2. 基于Tag创建分支(修改旧版本bug时用)
git checkout -b fix-v1.0.0 v1.0.0
场景 3:删除 Tag(打错 Tag 时)
bash
# 1. 删除本地Tag
git tag -d v1.0.0
# 2. 删除远程Tag
git push origin --delete v1.0.0
五、代码回滚与撤销(救场必备)
场景 1:撤销未暂存的修改(改乱了文件,想恢复到上一次提交)
bash
# 恢复指定文件
git checkout -- 文件名
# 恢复所有未暂存的文件
git checkout -- .
注意:此操作不可逆,会丢失所有未暂存的修改,确认无误后再执行。
场景 2:撤销已暂存但未提交的修改(git add 后后悔了)
bash
# 撤销指定文件的暂存
git reset HEAD 文件名
# 撤销所有文件的暂存
git reset HEAD .
场景 3:回滚已提交的代码(推送到远程前,想删除某次提交)
bash
# 查看提交记录,找到要回滚的提交ID(前6位即可)
git log --oneline
# 方式1:软回滚(保留修改,仅撤销提交,适合提交信息写错)
git reset --soft 提交ID
# 方式2:硬回滚(彻底删除提交及修改,慎用!)
git reset --hard 提交ID
场景 4:回滚已推送到远程的代码(高危操作,需谨慎)
bash
# 1. 本地回滚到指定版本
git reset --hard 提交ID
# 2. 强制推送到远程(会覆盖远程提交记录,多人协作需提前沟通)
git push origin 分支名 --force
替代方案:如果不想覆盖远程记录,推荐用「反向提交」(保留历史,更安全)
bash
git revert 提交ID
git push origin 分支名
六、多人协作进阶场景
场景 1:合并远程指定分支到本地分支
bash
# 比如:将远程dev分支合并到本地feat-pay分支
git checkout feat-pay
git pull origin dev # 等价于 git fetch origin dev + git merge origin/dev
场景 2:暂存本地修改(临时切换分支,不想提交)
bash
# 1. 暂存当前修改
git stash
# 2. 查看暂存列表
git stash list
# 3. 恢复最近一次暂存(并删除暂存记录)
git stash pop
# 4. 恢复指定暂存(不删除暂存记录)
git stash apply stash@{0}
# 5. 删除指定暂存
git stash drop stash@{0}
# 6. 删除所有暂存
git stash clear
场景 3:查看提交记录(筛选 / 搜索)
bash
# 查看所有提交记录(简洁版)
git log --oneline
# 查看指定作者的提交记录
git log --author="你的姓名"
# 查看指定时间段的提交
git log --since="2026-01-01" --until="2026-01-20"
# 查看某个文件的所有修改记录
git log -p 文件名
七、附录:高频问题解决
1. SSH 密钥配置(免密码拉取 / 推送私有仓库)
bash
# 1. 生成SSH密钥(一路回车,默认路径即可)
ssh-keygen -t rsa -C "你的邮箱@xxx.com"
# 2. 查看公钥内容(复制到GitHub/Gitee的SSH密钥配置中)
cat ~/.ssh/id_rsa.pub
# 3. 测试连接(验证是否配置成功)
ssh -T git@github.com
2. 忽略指定文件(.gitignore 配置)
创建 .gitignore 文件,写入需要忽略的文件 / 目录,示例:
plaintext
# 忽略node_modules目录
node_modules/
# 忽略所有.log文件
*.log
# 忽略.env文件(环境变量)
.env
# 忽略VSCode配置文件
.vscode/
# 忽略Mac系统隐藏文件
.DS_Store
注意:如果文件已经被 Git 追踪,修改.gitignore 后需先清除缓存:
bash
git rm --cached 文件名
git commit -m "docs: 忽略xxx文件"
总结
- 核心流程:日常开发遵循「拉取最新→修改→暂存→提交→推送」,分支操作遵循「基于主分支创建→开发→合并→删除」;
- 版本管理 :发布用 Tag 标记,回滚优先用
revert(保留历史),仅本地代码可硬回滚; - 多人协作:切换分支前先暂存 / 提交修改,合并分支前先拉取最新代码,避免冲突。
这份手册覆盖了 90% 以上的日常开发场景,你可以收藏起来,遇到对应场景直接查步骤即可。