您没有提供有关历史拓扑的具体信息,因此从一般情况开始创建
hotfix
,可执行以下命令:
$ git checkout -b hotfix upstream/master
$ git lola
* 81a514a (dev) 特别棒的功能
* cb4d5e6 很棒的功能
* d4a7906 酷炫的功能
| * 39e449a (HEAD, upstream/master, hotfix) v0.2
|/
* 264ddbc (master) v0.1
注:
git lola
是一个非标准但非常有用的别名。
将
hotfix
合并到
master
,可执行以下命令:
* 567f066 (HEAD, master) 合并分支 'hotfix'
|\
| * 1b1b6e3 (hotfix) 修复了一个恶心的错误
| * 39e449a (upstream/master) v0.2
|/
| * 81a514a (dev) 特别棒的功能
| * cb4d5e6 很棒的功能
| * d4a7906 酷炫的功能
|/
* 264ddbc v0.1
将
hotfix
单独合并到
dev
时会出现问题,可执行以下命令:
* 36aa1c8 (HEAD, dev) 将分支 'hotfix' 合并到 dev
|\
* | 81a514a 特别棒的功能
* | cb4d5e6 很棒的功能
* | d4a7906 酷炫的功能
| | * 567f066 (master) 合并分支 'hotfix'
| | |\
| |/ /
|/| /
| |/
| * 1b1b6e3 (hotfix) 修复了一个恶心的错误
| * 39e449a (upstream/master) v0.2
|/
* 264ddbc v0.1
此时,
master
不是
dev
的直接祖先,而是其兄弟。
向
dev
添加更多提交会使
master
成为其曾祖父。
请回忆一下,
dev
分支通过特性分支,并通过
--no-ff
合并到
master
分支。可能
release-1.0
从你的热修复开始,并得到了另一个 Bug 修复。
假设这个版本能够完成,可以使用以下命令将其合并回
master
:
$ git merge --no-ff -m "v1.0" release-1.0
$ git lola
* 5a384c8 (HEAD, master) v1.0
|\
| * f0398ba (release-1.0) Bugfix for v1.0
| * d89aa74 (dev) Jason does it again
| * a4dd5bf Jason saves the day
| * 36aa1c8 Merge branch 'hotfix' into dev
| |\
| * | 81a514a Stupendous feature
| * | cb4d5e6 Great feature
| * | d4a7906 Cool feature
* | | 567f066 Merge branch 'hotfix'
|\ \ \
| |/ /
|/| /
| |/
| * 1b1b6e3 (hotfix) Fix nasty bug
| * 39e449a (upstream/master) v0.2
|/
* 264ddbc v0.1
当然,对于您的历史记录,具体修复方法取决于具体情况。