当前位置:  开发笔记 > 开发工具 > 正文

如何在源代码管理中为旧标记创建补丁?

如何解决《如何在源代码管理中为旧标记创建补丁?》经验,为你挑选了1个好方法。

假设我在大约一年前发布了我的软件版本,并在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

如果有人解释为什么会发生这样的事情,我们将不胜感激.



1> AnoE..:

检查版本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涉及多个快速提交,您可以轻松切换到/来自它.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有