假设我在大约一年前发布了我的软件版本,并在Git中将其标记为2.3.
所以我不断添加功能和修复错误,在您知道之前,该软件现在是3.0版本.但是现在我的软件版本2.3上有一个错误,需要修复的人还没准备好升级到3.0版本.
就Git而言,在不改变Git仓库历史的情况下,管理将补丁应用到2.3并创建2.3.1软件的最佳方法是什么.
例如,我无法签出版本2.3,应用补丁然后将其标记为2.3.1并将其推高,因为这将创建一个新头.
开发人员通常如何管理支持旧版本的软件?
编辑
好的,所以我跟着@AnoE建议,现在我的工作流程如下修补以前的版本.建议是受欢迎的.
git checkout v2.3.0 // Make code changes git add -A git commit -m "Fixed a bug in old app" // Do something to verify the changes work on a different environment git checkout -b v2_3_1 git tag -a v2.3.1 -m "Fixed small bug." git push origin v2_3_1 git push --tags
我必须创建分支的原因是因为标签不会出现在我们的repo托管解决方案Kiln上.我不知道像Bitbucket或Github这样的其他提供商是否会显示没有分支关联的标签,或者这只是Git如何存储事物的副作用.我运行时标签出现在本地,git tag -l
但是通过Web UI无法看到.在我推开分支和标记后,我刚刚删除了分支,它从Web UI中正确显示.
git push --delete v2_3_1
如果有人解释为什么会发生这样的事情,我们将不胜感激.
检查版本2.3,应用补丁,标记它2.3.1正是你要做的.
创建一个新的头(而不是一个新的分支)不是一个问题,它是git的用途.请注意,"HEAD"在git中没有结构含义,它只是突出,因为它是在当前工作目录中处于活动状态的一个提交.Git只关心提交,结构上,你可以拥有任意数量的"顶级"提交.
所以:
git checkout 2.3 # gives you a "detached HEAD" git checkout -b dev_2.3 # a new branch, more for convenience ...modify files... git add ... ; git commit ... git tag 2.3.1 git branch -D dev_2.3 # get rid of it if you have a feeling that you won't be comming back soon
请记住,git中的分支和标签都没有什么特别之处.它们只是指向提交的粘滞便笺.以这种方式创建(可能是临时的)分支只是更方便,因为如果您正在执行的backport涉及多个快速提交,您可以轻松切换到/来自它.