基础操作
克隆已有仓库
1
2# 克隆仓库
git clone git@github.com:fivepmcoder/ruoyi-go.git初始化仓库
1
2# 初始化仓库
git init查看/添加/更换远程仓库地址
1
2
3
4
5
6# 查看远程地址
git remote -v
# 添加远程地址
git remote add origin <远程仓库地址>
# 更新远程地址
git remote set-url origin <新的远程仓库地址>添加与提交
1
2
3
4
5
6
7# 添加全部文件到 git 版本控制
git add .
# 添加指定文件到 git 版本控制(多个文件要在文件之间加空格)
git add internal/app/wechat/handler/wechat.go
git add internal/app/wechat/handler/wechat.go internal/service/wechat.go
# 提交文件到版本库
git commit -m "feat: 新增XX功能"拉取与推送
1
2
3
4# 拉去远程代码到本地(当我们要推送代码到远程仓库时,我们最好要先拉去远程代码到本地,检查有没有冲突,然后解决完成冲突之后再次推送到远程)
git pull origin develop
# 当拉取代码并且解决冲突之后,我们需要推送版本库中的代码到远程
git push origin develop查看状态
1
2# 查看状态
git status查看提交记录
1
2
3
4# 查看全部提交记录
git log
# 查看最近一次的提交记录
git log -n 1查看当前分支
1
2
3
4# 查看分支
git branch
# 查看所有分支
git branch -a切换分支
1
2# 切换分支,比如切换到 master 分支
git checkout master创建新分支
1
2
3
4# 以当前分支为基础,创建名字为 feature/login 的分支
git branch feature/login
# 创建分支并且切换到新分支
git checkout -b feature/login合并代码
1
2
3
4
5# 合并 develop 分支代码到 master
# 首先切换到 master 分支
git checkout master
# 执行合并
git merge develop取消代码修改
1
2
3
4
5# 取消全部修改
git checkout .
# 取消指定文件修改(多个文件要在文件之间加空格)
git checkout internal/app/wechat/handler/wechat.go
git checkout internal/app/wechat/handler/wechat.go internal/service/wechat.go恢复 git commit 操作
1
2# HEAD~1 表示当前提交的前一次提交
git reset --soft HEAD~1回滚代码(谨慎使用)
1
2
3
4# 回滚到指定 commit-hash
git reset --hard <commit-hash>
# 回滚到前一次提交
git reset --hard HEAD~1
高级操作
选择性合并某次提交
git cherry-pick例如要把
develop中提交记录的commit-hash为84cb1d5d8f892b81491f11da26df0772f73fcb55合并到master
1
2
3
4
5
6# 首先切换到 master 分支
git checkout master
# 执行合并操作
git cherry-pick 84cb1d5d8f892b81491f11da26df0772f73fcb55
# 推送合并到远程
git push origin master暂存修改
git stash我们有时候会遇到正在
develop分支开发新功能,做到一半时返回一个bug让马上解决,但是新功能只做了一半还不能提交,这是就可以使用git stash
1
2
3
4
5
6
7
8# 暂存当前修改
git stash
# 切换到 master 分支,修改代码
git checkout master
# 修改完毕,切换回 develop 分支
git checkout develop
# 取出暂存文件继续完成新功能
git stash pop
我们也会干代码写错分支的情况,比如需要在develop中修改代码,但是没注意到当前是在master分支,但是又不想丢弃已经写了一半的代码,这是就可以按照下方流程执行
1
2
3
4
5
6# 暂存当前修改
git stash
# 切换到 develop 分支
git checkout develop
# 取出暂存文件继续干活
git stash pop
💡注意可以多次执行git stash,但是git stash pop只能取出最后一次暂存的文件
团队协作流程
分支策略
- 主分支(`master`)
> 仅用于发布稳定版本,禁止直接提交代码
- 开发分支(`develop`)
> 日常开发的主分支,合并功能分支前需测试
- 功能分支(`feature/*`)
> 开发新功能时从 develop 创建,命名如 `feature/login`
- 修复分支(`fix/*`)
> 修复线上 Bug 时从 master 创建,命名如 `fix/login`
分支命名规则
| 类型 | 格式 | 示例 | 说明 |
|---|---|---|---|
| 功能分支 | feature/<功能名> |
feature/login |
新功能开发 |
| BUG修复 | fix/<问题描述> |
fix/login-error |
修复代码缺陷 |
提交规范
| 标识 | 解释 | 示例 |
|---|---|---|
| feat: | 新功能 | git commit -m "feat: 新功能" |
| fix: | 修补bug | git commit -m "fix: 修复登录失败" |
| docs: | 文档 | git commit -m "docs: readme 更新" |
| style: | 格式(不影响代码运行的变动) | git commit -m "style: 删除空格" |
| refactor: | 重构(即不是新增功能,也不是修改bug的代码变动) | git commit -m "refactor: 重构更改密码" |
| chore: | 构建过程或辅助工具的变动 | git commit -m "chore: 工具类调整" |
| revert: | 撤销,版本回退 | git commit -m "revert: 回退到XX" |
| perf: | 性能优化 | git commit -m "feat: 页面加载优化" |
| modify: | 修改功能 | git commit -m "modify: 修改XX逻辑" |