Git使用完全指南
一、Git是什么?
Git是一个分布式版本控制系统(DVCS),由Linus Torvalds于2005年开发。核心特点:
- 记录文件变化历史
- 支持多人协作开发
- 本地完整版本库存储
- 强大的分支管理能力
二、Git基本理论
1. 三个核心区域
- 工作区(Working Directory)
- 暂存区(Staging Area)
- 版本库(Repository)
2.工作流流程图
3. 文件状态周期
未跟踪 → 已跟踪(未修改 → 已修改 → 已暂存 → 已提交)
功能开发甘特图
4.多人协作序列图
三、Git基本命令速查
命令 | 作用 | 示例 |
---|---|---|
git init | 初始化仓库 | git init |
git clone | 克隆远程仓库 | git clone https://github.com/user/repo.git |
git add | 添加文件到暂存区 | git add . |
git commit | 提交到版本库 | git commit -m "feat: add login feature" |
git status | 查看状态 | git status -s |
git log | 查看提交历史 | git log --oneline --graph |
git diff | 查看差异 | git diff HEAD~1 |
git push | 推送远程 | git push origin main |
git pull | 拉取更新 | git pull --rebase |
git branch | 分支管理 | git branch -a |
git checkout | 切换分支 | git checkout -b feature/login |
git merge | 合并分支 | git merge dev |
git reset | 版本回退 | git reset --soft HEAD~1 |
git stash | 暂存修改 | git stash pop |
四、Git提交规范(Angular规范)
1.提交类型流程图
推荐格式:<type>(<scope>): <subject>
feat(login): add social login feature
fix(payment): handle currency conversion error
2.常用type类型:
业界通用的Git提交规范:
():
-
type
- 作用
- 用于说明 Git Commit 的类别,只允许使用下面的标识。
标识- sync:同步主线或分支的bug。
- merge:代码合并。
- revert:回滚到上一个版本。
- chore:构建过程或辅助工具的变动。
- test:增加测试。
- perf:优化相关,比如提升性能、体验。
- refactor:重构(既不是新增功能,也不是修改bug的代码变动)。
- style:格式(不影响代码运行的变动)。
- docs:文档(documentation)。
- fix / to:修复bug,可以是QA(Quality Assurance)发现的bug,也可以是研发自己发现的bug。
- feat:新功能(feature)。
- 用于说明 Git Commit 的类别,只允许使用下面的标识。
- 作用
-
scope
-
作用
-
scope用于说明 Commit 影响的范围,比如数据层、控制层、视图层等,视项目不同而不同。
-
例子
-
在JAVA,可以是Controller,Service,Dao等。
在Angular,可以是location,browser,compile,compile,rootScope, ngHref,ngClick,ngView等。 -
如果你的修改影响了不止一个scope,你可以使用*代替。
-
subject
-
作用
- subject是 Commit 目的的简短描述,一般不超过50个字符。
-
注意事项
建议使用中文。
结尾不加句号或其他标点符号。 -
五、Git分支管理
1. 主流分支类型
- master/main:生产环境分支
- develop:开发主分支
- feature/*:功能开发分支
- hotfix/*:紧急修复分支
- release/*:预发布分支
2. 分支操作流程
# 创建新功能分支
git checkout -b feature/search# 开发完成后合并到develop
git checkout develop
git merge --no-ff feature/search# 删除已合并分支
git branch -d feature/search
六、重点扩展内容
1. .gitignore文件
# 忽略所有.class文件
*.class# 不忽略lib目录下的.class
!lib/*.class# 忽略node_modules目录
node_modules/
2. 配置别名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.st status
3. 冲突解决流程
git pull
发现冲突- 手动编辑冲突文件(搜索
<<<<<<<
标记) git add
标记冲突已解决git commit
完成合并
七、重点总结
- 理解工作区/暂存区/版本库的递进关系
- 掌握
add-commit-push
核心工作流 - 遵循规范的提交消息格式
- 采用合理的分支管理策略
- 善用
.gitignore
管理忽略文件 - 定期
git pull
保持代码同步 - 合并前先解决本地冲突
八、注意事项
- 危险操作三原则:
- 不要强制推送(
--force
)到公共分支 - 谨慎使用
reset --hard
- 删除分支前确认已合并
- 不要强制推送(
- 提交前必须检查:
git status
查看文件状态git diff
确认修改内容- 确保不提交敏感信息(密码/密钥)
- 分支管理建议:
- 功能分支命名清晰(feature/xxx)
- 及时清理已合并分支
- 保持主分支的稳定性
- 协作开发技巧:
- 使用
git fetch + merge
代替直接pull - 推荐
--rebase
保持提交线整洁 - 定期同步远程仓库
- 使用