基于分支和标签的版本管理
开发新特性或修复当前软件版本的bug
避免在主分支(master或main)上直接开发,开发新特性或修复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-featurenew-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.txtstage修改
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修复分支。