我们在进行项目开发的时候,为了更好的管理项目、追溯项目历史,我们会采用代码管理。一般常用的有 git svn 等,但是项目的开发、测试、上线往往都是有很多工作,如果没有一个合适的管理规范那会导致项目出现一下不必要的麻烦。可能各个公司有不同的管理方式,本文分享一下我们一直沿用的 GIT 分支管理规范。

Philadelphia's Magic Gardens. This place was so cool!

# Git 常用命令

git clone <远程URL> 克隆远程仓库代码(默认拉取到的是master分支)
git checkout <分支> 切换到指定分支
git rebase <分支> 合并指定分支的代码
git remote add origin <远程git>
git remote -v 查看git的链接URL
git status 查看仓库状态
git add . 提交本地修改到暂存区
git commit -m '提交更改的备注' 将暂存区提交到本地仓库
git push origin <分支> 推送本地仓库更改的分支到远程仓库的分支

# Git Flow 常用的分支

  • Master 分支
    这个分支的代码是发布到生产环境的代码,这个分支只能从其他分支合并,不能在这个分支直接修改
  • Develop 分支
    这个分支是我们是我们的主开发分支,包含所有要发布到下一个 Release 的代码,这个主要合并与其他分支,比如 Feature 分支
  • Feature 分支
    这个分支主要是用来开发一个新的功能,一旦开发完成,我们合并回 Develop 分支进入下一个 Release
  • Release 分支
    当你需要一个发布一个新 Release 的时候,我们基于 Develop 分支创建一个 Release 分支,完成 Release 后,我们合并到 Master 和 Develop 分支
  • Hotfix 分支
    当我们在 Master 发现新的 Bug 时候,我们需要创建一个 Hotfix, 完成 Hotfix 后,我们合并回 Master 和 Develop 分支,所以 Hotfix 的改动会进入下一个 Release

# Git 回滚版本

# 1. 命令行操作 (以 Git Bash Here 工具为例)

  • 先显示提交的 log ( -3 为显示最近的 3 条记录)
    git log -3
  • 回滚到指定的版本 (有 softhardmixed 等参数)
    git reset --hard <版本号>
  • 强制提交(-f 表示 force 强制提交)
    git push -f origin <分支名>

# 2. 界面版操作 (以 TortoiseGit 工具为例)

<!-- failed to push some refs to 'code.aliyun.com:1607458660/test.git' -->

  • 先显示提交的 log (项目目录下右键点击 TortoriseGit => 显示日志
    Philadelphia's Magic Gardens. This place was so cool!
  • 选取指定版本 ( 右键 选择 重置``xx分支 到此版本)
    Philadelphia's Magic Gardens. This place was so cool!
  • 重置类型 ( 选择硬重置 => 重置工作区和索引(丢弃所有本地变更) , 点击 确定关闭窗口 )
    Philadelphia's Magic Gardens. This place was so cool!
    Philadelphia's Magic Gardens. This place was so cool!
  • 重置的版本 ( 右键 选择 推送 => 点击 勾选 已知变更)
    Philadelphia's Magic Gardens. This place was so cool!
    Philadelphia's Magic Gardens. This place was so cool!

在这中间可能会报 error:failed to push some refs to 'code.aliyun.com:xxx.git'
莫慌,此时你需要做的就是拉取一下远程的变更并合并到本地,然后再次推送即可!!

Philadelphia's Magic Gardens. This place was so cool!

此时就已经顺利回滚到指定版本了

# 参考文章:

https://www.bootcss.com/p/git-guide/
https://git-scm.com/book/zh/v2