Skip to content

基于分支和标签的版本管理

开发新特性或修复当前软件版本的bug

避免在主分支(mastermain)上直接开发,开发新特性或修复bug需要在特性分支(feature branch)上工作。下面命令在当前HEAD提交上创建名为new-feature分支作为新特性开发的工作分支

bash
# 查看当前所在分支是否为主分支,如果 main 前面显示一个 * 号表示当前正处于主分支上
git branch

# 在当前主分支上创建一个名为 new-feature 的开发分支
git checkout -b new-feature

# 查看当前是否在 new-feature 分支上
git branch

new-feature分支上模拟完成开发新的特性

bash
# 向 status.txt 输出 "版本1.0.0" 模拟属于版本 1.0.0 的新特性
echo "版本1.0.0的内容" > status.txt

# 查看当前变动的文件
git status .

# stage变动的文件
git add status.txt

# 创建提交日志
git commit -m "完成新特性1.0.0开发"

# 推送提交到仓库中
git push --set-upstream origin new-feature

new-feature分支新特性测试通过后合并代码到主分支main

bash
# 切换到 main 分支
git checkout main

# 合并 new-feature 分支到当前 main 分支中
# Git 会尝试自动合并两个分支。如果合并过程中没有冲突,Git 会直接完成合并并提交一个新的合并提交。
# 但是,如果有冲突,Git 会停止合并过程,并提示你解决冲突。你需要手动编辑有冲突的文件,解决冲突,然后运行 git # add 来标记冲突已解决,最后运行 git commit 来完成合并提交。
git merge new-feature

# 推送合并结果到仓库中
git push

删除new-feature本地和远程分支

bash
# 删除本地 new-feature 分支
git branch -D new-feature

# 删除远程仓库分支
git push origin --delete new-feature

发布新版本并打标签

bash
# 打标签
git tag -a v1.0.0 -m "包含:新特性1.0.0"

# 推送标签到仓库中
git push origin v1.0.0

开发新特性2并发布1.1.0版本

bash
# 创建分支 new-feature2
git checkout -b new-feature2

# 向 status2.txt 输出 "版本1.1.0" 模拟属于版本 1.1.0 的新特性
echo "版本1.1.0的内容" > status2.txt

# 查看当前变动的文件
git status .

# stage变动的文件
git add status2.txt

# 创建提交日志
git commit -m "完成新特性1.1.0开发"

# 推送提交到仓库中
git push --set-upstream origin new-feature2

# `new-feature2`分支新特性测试通过后合并代码到主分支`main`中
# 切换到 main 分支
git checkout main

# 合并 new-feature2 分支到当前 main 分支中
git merge new-feature2

# 推送合并结果到仓库中
git push

# 删除本地 new-feature2 分支
git branch -D new-feature2

# 删除远程仓库分支
git push origin --delete new-feature2

# 打标签
git tag -a v1.1.0 -m "包含:新特性1.1.0"

# 推送标签到仓库中
git push origin v1.1.0

修复软件旧版本中的bug(旧版本打补丁)

注意:如何合并修复到主分支中

基于 v1.0.0 标签创建一个名为 v1.0.0-bugfix 的新分支

bash
git checkout -b v1.0.0-bugfix v1.0.0

模拟修复bug

bash
echo "版本1.0.0的bug修复" >> status.txt

stage修改

bash
git add status.txt

新增提交日志

bash
git commit -m "版本1.0.0的bug修复"

推送bug修复到仓库中

bash
git push --set-upstream origin v1.0.0-bugfix

测试通过后发布并打标签

bash
# 打标签
git tag -a v1.0.1-bugfix -m "xxx bug修复"

# 推送标签到仓库中
git push origin v1.0.1-bugfix

注意:不能删除分支,此分支作为后期版本1.0.0 bug修复分支。