Git 典型使用案例¶
一、基础场景:个人开发(本地仓库管理)¶
核心目标:¶
在本地跟踪文件修改、提交版本、查看历史,无需团队协作。
完整流程:¶
-
初始化本地仓库(新建项目/已有项目添加Git跟踪)
Bash 1 2 3 4 5 6 7
# 1. 新建项目并初始化(推荐) mkdir my-project && cd my-project # 创建并进入项目文件夹 git init # 初始化Git仓库(生成隐藏的.git目录) # 2. 已有项目添加Git跟踪(进入现有项目文件夹) cd existing-project git init -
添加文件到暂存区(告诉Git“要跟踪这些修改”)
Bash 1 2 3 4 5 6 7 8
# 添加单个文件 git add README.md # 添加所有修改/新增文件(常用) git add . # 注意:不会添加被.gitignore排除的文件 # 取消暂存某个文件(误加时用) git reset HEAD README.md -
提交版本(将暂存区的修改保存为“历史版本”,必须写提交信息)
✅ 提交信息规范(推荐):Bash 1 2
git commit -m "feat: 初始化项目,添加README和核心代码" # 规范:类型+描述(见下方说明) git commit -am "fix: 修复登录按钮点击无响应问题" # 快捷方式:跳过暂存区,直接提交已跟踪文件的修改类型: 简短描述
常见类型:feat(新功能)、fix(修复bug)、docs(文档修改)、style(格式调整,不影响代码功能)、refactor(重构)、test(测试代码)、chore(构建/工具配置)。 -
查看状态/历史/差异(日常高频操作)
Bash 1 2 3 4 5
git status # 查看当前仓库状态(哪些文件未跟踪/已修改/已暂存) git log # 查看提交历史(按时间倒序,q退出) git log --oneline # 简洁显示历史(一行一个版本,含版本号前7位) git diff # 查看未暂存的修改(工作区 vs 暂存区) git diff --cached # 查看已暂存的修改(暂存区 vs 本地仓库) -
版本回滚(修改出错,回到之前的正确版本)
Bash 1 2 3 4 5 6 7 8 9 10
# 1. 查看历史,找到要回滚的版本号(比如 abc1234) git log --oneline # 2. 回滚到指定版本(保留后续修改,仅重置仓库状态) git reset --soft abc1234 # 工作区和暂存区不变,仅本地仓库回滚 git reset --mixed abc1234 # (默认)工作区不变,暂存区和本地仓库回滚(常用) git reset --hard abc1234 # 工作区、暂存区、本地仓库全部回滚(谨慎!会丢失未提交修改) # 3. 若已提交错误版本,想“撤销提交”(生成新的反向提交,不删除历史) git revert abc1234 # 适合已推送到远程仓库的场景
二、核心场景:团队协作(远程仓库同步)¶
核心目标:¶
通过 GitHub/GitLab/Gitee 等远程仓库,与团队成员共享代码、协同开发。
前提准备:¶
- 注册远程仓库账号(如 GitHub),创建远程仓库(比如
https://github.com/your-name/team-project.git) - 本地配置Git身份(首次使用必须配置,否则无法提交)
Bash 1 2
git config --global user.name "你的名字" git config --global user.email "你的邮箱"
场景1:从远程仓库克隆项目(首次参与团队项目)¶
| Bash | |
|---|---|
1 2 3 4 5 | |
场景2:本地项目关联远程仓库(本地已开发,首次推送到远程)¶
| Bash | |
|---|---|
1 2 3 4 5 6 7 8 9 10 | |
场景3:团队协作日常流程(拉取更新→开发→推送)¶
| Bash | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 | |
场景4:解决代码冲突(多人修改同一文件同一位置)¶
冲突是团队协作中最常见的问题,核心是“协商后保留正确代码”:
| Bash | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
三、进阶场景:分支管理(多功能并行开发)¶
核心目标:¶
通过分支隔离不同功能/修复,避免干扰主分支(master/main)的稳定性。
分支命名规范(推荐):¶
- 功能分支:
feature/用户登录、feature/支付功能 - 修复分支:
bugfix/登录失败、hotfix/生产环境崩溃 - 发布分支:
release/v1.0.0
完整流程:¶
-
创建并切换到新分支(基于主分支创建)
Bash 1 2 3 4 5 6 7 8 9
# 方法1:先创建分支,再切换 git branch feature/login # 创建分支 git checkout feature/login # 切换到该分支 # 方法2:创建并切换(常用快捷方式) git checkout -b feature/login # 方法3:Git 2.23+ 推荐用switch(更直观) git switch -c feature/login # -c = create -
在分支上开发并提交(流程和主分支一致)
Bash 1 2 3
# ... 开发登录功能 ... git add . git commit -m "feat: 完成登录页面和接口对接" -
功能完成后,合并到主分支
Bash 1 2 3 4 5 6 7 8 9 10 11
# 1. 先切换回主分支 git switch master # 或 git checkout master # 2. 拉取远程主分支最新更新(避免合并后冲突) git pull origin master # 3. 合并功能分支到主分支 git merge feature/login # 若有冲突,按“场景4”解决后提交 # 4. 推送合并后的主分支到远程 git push origin master -
删除已合并的分支(可选,清理分支)
Bash 1 2 3 4 5
# 删除本地分支 git branch -d feature/login # 删除远程分支(若已推送过该分支到远程) git push origin --delete feature/login
四、高频场景:其他实用操作¶
1. 忽略不需要跟踪的文件(.gitignore)¶
创建 .gitignore 文件,写入不需要Git跟踪的文件/目录(如编译产物、日志、IDE配置):
| Bash | |
|---|---|
1 2 | |
.gitignore 内容示例(前端项目):
| Text Only | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
2. 临时存储修改(stash,开发中切换分支用)¶
场景:正在开发功能A(未提交),需要紧急修复bug(切换到其他分支),但不想提交未完成的代码:
| Bash | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
3. 查看远程仓库信息¶
| Bash | |
|---|---|
1 2 | |
4. 撤销本地修改(未暂存/已暂存)¶
| Bash | |
|---|---|
1 2 3 4 5 6 7 | |
五、总结:Git核心工作流图谱¶
| Text Only | |
|---|---|
1 2 3 4 5 6 7 | |
关键原则:¶
- 提交要“小而频繁”,每个提交只做一件事(便于回滚和审查)
- 团队协作前必做
git pull,避免冲突 - 重要分支(如master)禁止直接提交,通过分支合并
- 提交信息要清晰,让他人(或未来的你)能看懂修改目的
按以上场景操作,可覆盖 90% 的日常Git使用需求,遇到问题优先用 git status 查看当前状态,Git的错误提示通常会给出解决方案~