在使用GitHub和GitLab时,代码仓库的管理和使用对于开发来说很重要,这里分享一下我学到的Git工作流程和实践方法。
Git基础知识
如果你对Git还不太熟悉
强烈推荐这个学习网站:Learn Git
这是一个Git学习网站,通过互动式关卡让你理解Git的核心概念。quiz必须拿到18/20 分,也就是说,必须全明白。
Git基础工作流
日常开发的核心命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| # 1. 查看状态
git status
# 2. 添加文件到暂存区
git add . # 添加所有修改
git add file.txt # 添加指定文件
# 3. 提交
git commit -m "提交信息"
# 4. 推送到远程
git push origin main
# 5. 拉取最新代码
git pull origin main
|
分支操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| # 查看分支
git branch # 本地分支
git branch -a # 所有分支
# 创建并切换分支
git checkout -b feature-name
# 或使用新命令
git switch -c feature-name
# 切换分支
git checkout main
git switch main
# 删除分支
git branch -d feature-name # 安全删除
git branch -D feature-name # 强制删除
|
Git工作流
工作流程
1. 分支策略
1
2
3
4
5
6
| main(master) ← 生产环境代码
↑
develop ← 开发环境代码
↑
feature/xxx ← 功能开发分支
hotfix/xxx ← 紧急修复分支
|
分支命名规范:
feature/user-login - 功能分支bugfix/fix-upload - bug修复hotfix/urgent-fix - 紧急修复release/v1.0.0 - 发布分支
2. 完整开发流程
第一阶段:初始设置 & 克隆项目
- 克隆远程仓库(首次获取项目)
git clone
cd 项目名
查看所有分支(本地+远程)
git branch -avv
创建并切换到个人开发分支(基于最新master)
git checkout master # 进入主分支
git pull origin master # 更新主分支
git checkout -b name/功能描述 # 创建个人分支
推送分支并建立跟踪关系(关键步骤!)
git push -u origin name/功能描述
第二阶段:日常开发工作流
每日开始工作前(必做)
git checkout zts/功能描述 # 切换到个人分支
git fetch –all # 获取所有远程更新
git merge origin/master # 合并主分支最新代码
开发过程中…
修改文件后保存(正常使用编辑器)
查看修改状态
git status
添加修改到暂存区
git add 文件名 # 添加特定文件
git add . # 添加所有修改(不含删除)
git add -A # 添加所有修改(包含删除)
提交到本地仓库
git commit -m “清晰的提交说明”
提交说明规范:
feat: 新功能
fix: 修复bug
docs: 文档更新
refactor: 重构代码
test: 测试用例
推送代码到远程
git push
Code Review流程
CR实践
提交PR前的自查
1
2
3
4
5
6
7
8
| # 确保代码格式正确
npm run lint
# 运行测试
npm run test
# 查看改动
git diff develop
|
PR描述模板
1
2
3
4
5
6
7
8
9
10
11
12
| ## 功能描述
添加了...功能
## 修改内容
- [ ] 新增...模块
- [ ] 添加单元测试
- [ ] 更新文档
## 测试说明
## 相关issue
|
响应Review意见
1
2
3
4
| # 修改后追加提交
git add .
git commit -m "fix: 根据review意见修改"
git push origin feature-branch
|
冲突解决
合并冲突的处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| # 1. 拉取最新代码发现冲突
git pull origin develop
# Auto-merging file.txt
# CONFLICT (content): Merge conflict in file.txt
# 2. 查看冲突文件
git status
# 3. 手动解决冲突
# 打开文件,会看到:
# <<<<<<< HEAD
# 你的修改
# =======
# 别人的修改
# >>>>>>> branch-name
# 4. 修改完成后
git add file.txt
git commit -m "解决合并冲突"
# 5. 推送
git push origin feature-branch
|
预防冲突的技巧
1
2
3
4
5
6
7
8
| # 开发前先同步最新代码
git checkout develop
git pull origin develop
git checkout feature-branch
git rebase develop
# 频繁提交,小步快跑
# 及时push,让团队知道你的进度
|
踩过的坑
1. 不要在主分支直接开发
错误做法:
1
2
3
| git checkout main
# 直接在main上改代码
git commit -m "fix bug"
|
正确做法:
1
2
3
4
5
| git checkout main
git checkout -b hotfix/urgent-fix
# 在新分支修改
git commit -m "fix: 紧急修复"
# 通过PR合并
|
2. commit信息要有意义
烂提交信息:
1
2
3
| git commit -m "修改"
git commit -m "update"
git commit -m "fix bug"
|
好的提交信息:
1
2
| git commit -m "feat(parser): 添加PDF文本提取功能"
git commit -m "fix(upload): 修复大于10MB文件上传失败的问题"
|
3. 不要提交大文件和敏感信息
1
2
3
4
5
6
7
8
| # 使用.gitignore
echo "*.log" >> .gitignore
echo ".env" >> .gitignore
echo "node_modules/" >> .gitignore
# 如果不小心提交了
git rm --cached sensitive_file
git commit -m "移除敏感文件"
|
4. 定期同步远程仓库
1
2
3
4
5
6
7
| # 每天开始工作前
git checkout develop
git pull origin develop
# 每次开发前
git checkout feature-branch
git rebase develop
|
📝 实用Git别名配置
提高效率的Git快捷命令:
1
2
3
4
5
6
7
8
9
10
11
| # 配置别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.lg "log --graph --oneline --decorate --all"
# 使用
git st # 等于 git status
git co main # 等于 git checkout main
git lg # 漂亮的日志
|
总结
Git工作流的核心原则
- 小步提交 - 功能拆分,频繁commit
- 清晰分支 - 命名规范,职责明确
- 规范信息 - commit message要有意义
- 及时同步 - 经常pull,避免冲突
- 代码审查 - PR流程不能省
最大的感悟:
Git是团队协作的规范。好的Git使用习惯,能让自己的代码更清晰,也不用背那么多锅QWQ
下篇写啥好呢?正则还是什么呢,要不不写技术文档了,学到再写,嘿嘿