git - 在 git 中修复错误并将更改合并到以前版本和所有下一个版本的正确方法是什么?
问题描述
我是一个单一的开发人员,拥有 master、dev 分支和一个或多个特性分支(来自 dev)和 bugfix 分支(来自 master),我总是将它们合并到 master 和 dev 中。
我应该如何正确解决以下情况?
- 我有一个有很多提交的主分支,
- ...在下一次提交中设置 v3.0 标签,
- ...然后又是一组提交和其他标签(其他版本),
- 然后是带有 v5.0 标签的提交。
在 3.0 版本中,我发现了一个小错误,我需要在 3.0(包括在内)和更高版本的所有版本中修复它。
我进行如下:
git clone .... cloned git to localhost
git checkout v3.0 checkout to v3.0 tag commit
然后我对源代码进行了更改,然后
git add . add changes to stack
git checkout -b bugfix checkout to new branch bugfix
git commit -m "My Bugfix ..." make commit
...所以我将更改移动到该分支并在那里签出并提交,现在我不知道这些错误修复分支如何合并到主分支的末尾,而是在提交之后将它们添加为新提交v3.0 标签。
commit1
commit2
commit3 tag v3.0
<== merge bugfix commit
commit4
commit5
解决方案
所以我将更改移动到这个分支并在那里签出并提交
完美的。
现在我不知道那些错误修复分支如何合并到主分支的末尾,而是在带有 v3.0 标签的提交之后将它们添加为新提交。
你没有。如果您想提供一个完全替代的历史记录,您可以在执行所有其他工作之前修复该错误,您可以将所有其他工作重新定位到您的修复并强制推送结果,但是
a) 当您准备要发布的补丁系列时,最好只修复错误的提交并基于更正的提交,并且
b)这不是出版前的工作,你不是为出版而编辑,你是在发布人们依赖的历史勘误表。如果(如果)你可以随便让每个人都知道“嘿,我不得不重新设置 v3.0,对不起,重新获取和重新设置你基于此或此后所做的任何事情”,那么这是可行的。对于您很快就会接受的 oopses,它也比所有替代方案都要好得多。
v3.0 有一个错误,而您使用的是 v5.0,所以不,这不是一个消失的糟糕。这是一个已经出现的错误,您已经确定并发布了修复,现在将其合并到所有需要修复的提示中。为了使集成更容易,首先从当前提示的公共合并基础合并,然后从那里合并到各个提示。
推荐阅读
- sql - 如何在 Bigquery 存储过程中添加过滤器 sql `WHERE` CLAUSE?
- windows - 2个列表框选定项目gui
- regex - 如何使正则表达式区分大小写
- javascript - 显示缩放的内容
- python - 加速 Raspberry Pi 性能
- api - Drupal 8 - 将 Web 表单提交到外部 API
- javascript - 我想将 Outlook 日历与 React Native 应用程序和同步功能连接起来。是否有任何库或 API 可以帮助我?
- mips - MIPS 打印 0 到 n 范围内 2 和 3 的倍数
- visual-studio - Unity:Hololens 在部署时不会运行线程但在编辑器中工作
- laravel - 在 Laravel 7 中更改用户模型的名称