基础操作

  • 克隆已有仓库

    1
    2
    # 克隆仓库
    git clone [email protected]: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-hash84cb1d5d8f892b81491f11da26df0772f73fcb55 合并到 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逻辑"