通过Git管理软件开发的版本号

602 阅读3分钟

在软件开发过程中,每当我们的软件有了新的功能或者修复了一些bug,我们都需要升级版本号后重新发布. 那么我们如何通过Git,保留特定版本的代码呢?

对于上面描述的问题,通常我们的解决方案有两种: 1.创建特定的版本分支; 2.在每次发版前,通过tag进行记录。

方案一

  1. 方案描述

    这种方式的操作方式比较简单,在每次发版后,以当前版本的代码为基础创建一个新的分支(以新的版本号命名的分支,如:release/v1.0.0, release/v1.1.0 等),然后在该分支的基础上进行新的版本需求开发。

  2. 特点

    • 在前一个版本发版后操作(创建新的分支)
    • 操作简单
  3. 缺点

    • 随着版本的迭代,远程分支会越来越多
  4. 示例

    没有相关的复杂操作,只需要管理员在上个版本的基础上创建一个新的版本分支即可

方案二

  1. 方案描述

    在当前版本需要发布前,在当前commit进行一次打tag操作. git tag v1.0.0 或者 git tag -a v1.0.0 -m "relase v1.0.0". git 可以通过这种打tag的方式,将当前分支的最新的commitId进行记录,并保存,当我们切换到该tag,即回到了这个版本。这种方案可以非常快速的回到某一个版本,并且解决方案一的缺点,不需要创建非常多的版本分支,所有版本在一个分支上进行开发.

  2. 特点

    • 在发版前进行打tag操作
  3. 缺点

    • 操作难度稍微高一点
    • 在修复版本bug时,不可避免的需要创建一些新的临时分支,并在回顾测试通过后,(此时可以在打一个新的tag,通常bug修复会有小的版本号提示),将代码合入到主分支(此处的主分支不特指master分支,指的是我们通过该方案实现的所有版本所在的分支)
  4. 示例

# 1. 拉取当前最新版本分支代码
git fetch origin release
	
# 2. 切换到该分支
git branch release
git checkout release
或者
git checkout -b release

# 3. 在当前位置打tag 
git tag v1.0.0
git tag -a v1.0.0 -m "release v1.0.0"

# 4. 将本地的tag push到远程
git push originn v1.0.0

-------------------------------

# 5. 当出现bug需要修复时,拉取该tag的代码,并创建本地分支进行修改和提PR
git pull origin tag v1.0.0 // 获取远程的tag
git chekcout -b bugfix v1.0.0 # 以v1.0.0 的代码创建并切换一个本地分支bugfix

# 6. bugfix

# 7. bug 修复并回测完成后, 添加tag并push到远程
git tag -a v1.0.1 -m "bugfix v1.0.1"
git push origin v1.0.1

总结

这两种方案都是有利有弊,现在工作中使用的是第一种方法,经过验证,基本上没有什么问题,可以正常用于开发过程中。第二种方案,是学习tag过程中的总结,整体效果有待实践。

如果在学习和使用过程中发现什么问题,欢迎随时交流~

有关Git tag相关的命令可参考:git-scm.com/book/zh/v2/…