这篇文章适合有git基础的同学,默认你已经掌握了基本的git命令用法,我将用较短的篇幅介绍一次完整的团队开发流程
1.克隆仓库
如果是第一次参与项目开发,需要从远程仓库拉取代码到本地:
git clone <远程仓库地址>
2.获取最新代码
开发之前拉取主分支代码,确保开始开发之前代码是最新的
git checkout <主分支,如 main 或 master>
git pull origin <主分支>
3.创建新的开发分支
git checkout -b feature/<功能名称>
相当于以下两个指令
git branch dev //创建分支
git checkout dev //切换到创建的分支
举个例子
git checkout -b feature/login
feature等前缀是团队约定好的,这样可以是新代码的目的更加明显,会更有利于沟通和管理。这里提供一些团队常用的分支命名:
- main 或 master:主分支,稳定版代码
- develop:开发分支,合并新功能前的测试分支
- feature/xxx:新功能分支
- bugfix/xxx :普通 bug 修复
- hotfix/xxx 紧急修复(通常直接从 main 分支创建)
- release/xxx 预发布版本
- test/xxx 测试分支
4.开发与提交代码
在本地修改代码后,依次执行以下命令:
git add .
git commit -m "描述清晰的提交信息"
不应提交的文件
在使用 Git 进行开发时,有一些文件不应该提交到仓库,通常需要使用 .gitignore 文件 来忽略它们。
-
依赖文件
依赖文件可以通过包管理工具重新安装,无需提交
比如Java 项目的的target/, .gradle/, .idea/
Go 项目的bin/, pkg/
Node.js 项目的node_modules/
C++ 项目(CMake 或 Qt)的build/, CMakeCache.txt -
编译生成的二进制文件
这些是编译后的文件,不需要提交:
.o, .so, .a, .lib, .dll(C/C++ 编译文件)
.class, .jar, .war(Java 编译文件)
.pyc, .pyo(Python 编译文件)
.exe, .out, .app(可执行文件) -
用户本地配置文件
这些文件是开发者个人的配置,不应该提交:
.vscode/, .idea/(IDE 配置文件)
*.iml, .DS_Store, Thumbs.db(系统生成的文件)
*.log(日志文件)
*.swp(Vim 临时文件) -
环境变量和敏感信息
包含密码、API 密钥、数据库配置的文件绝对不能提交:
.env
config.json
secrets.yml
private.key, id_rsa
如果不小心提交了敏感文件,应该立即删除并修改密码或密钥! -
临时文件
*.tmp, *.bak
*.lock
.gitignore 文件里 debug/ 之类的临时目录
5.同步远程代码
git checkout main # 切换到主分支
git pull origin main # 拉取最新代码
git checkout feature/xxx # 切换回自己的开发分支
git merge main # 把主分支的最新代码合并到自己的分支
如果合并过程中出现冲突,手动解决冲突后:
git add .
git commit -m "解决合并冲突"
然后再推送自己的分支:
git push origin feature/xxx
6.创建合并请求(Pull Request / Merge Request)
代码开发完成后,在远程仓库上创建合并请求(PR/MR)。
PR和MR都是合并请求
Pull Request (PR) 是 GitHub 的术语
Merge Request (MR) 是 GitLab/Gitee 的术语
它的作用是让团队成员审核你的代码,确保没有问题后才合并到主分支
创建PR/MR的方法
- 点击“Compare & pull request”
- 选择目标分支 main,填写代码变更描述(说明改了什么、为什么改)
- 指定审核人(通常是你的上级或团队成员)
- 提交 PR/MR,等待审核
代码审核
代码提交后,审核人会查看你的代码,如果有问题,你需要本地修改后重新 commit 并 push,PR/MR 会自动更新
审核通过 , 合并到主分支
审核人会执行最终合并操作:
审核通过后,点击Merge 按钮,合并你的 feature/xxx 分支到 main
合并后,远程仓库的 main 分支就包含了你的代码
7.删除已合并的分支
合并后,你的 feature/xxx 分支已经没用了,可以删除:
git branch -d feature/xxx # 删除本地分支
git push origin --delete feature/xxx # 删除远程分支
8.更新本地主分支
你的代码合并进 main 了,但本地 main 还是旧的,需要更新:
git checkout main
git pull origin main
到此,你就完成了一次完整的git开发流程