gpt4 book ai didi

git - 将修补程序 merge 到 dev 和 master 中会导致分歧

转载 作者:太空狗 更新时间:2023-10-29 13:38:23 26 4
gpt4 key购买 nike

我正在关注 a success Git branching model (又名 git-flow)。

我按照完成修补程序分支部分的指导进行了修补程序。

我在 master 之外创建了一个hotfix 分支:

> git checkout -b hotfix upstream/master

做了一些工作并手动将其 merge 到master:

> git checkout master 
> git merge --no-ff hotfix

然后手动将其 merge 回dev:

> git checkout dev
> git merge --no-ff hotfix

我做了更多工作 - 针对 dev 进行了提交。一切似乎都很好。但是当我去 merge devmaster 时,它不能。

> git checkout master
> git merge --ff-only dev
fatal: Not possible to fast-forward, aborting.

hotfix 的 merge 提交似乎是不同之处。

我假设遵循这个过程会保持共同的历史记录。我做错了什么?

最佳答案

您没有提供有关历史拓扑结构的细节,因此从一般情况开始并创建 hotfix 给出

$ git checkout -b hotfix upstream/master$ git lola* 81a514a (dev) Stupendous feature* cb4d5e6 Great feature* d4a7906 Cool feature| * 39e449a (HEAD, upstream/master, hotfix) v0.2|/* 264ddbc (master) v0.1

备注:git lola是一个非标准但非常有用的别名。

merge hotfixmaster 给出

*   567f066 (HEAD, master) Merge branch 'hotfix'|\| * 1b1b6e3 (hotfix) Fix nasty bug| * 39e449a (upstream/master) v0.2|/| * 81a514a (dev) Stupendous feature| * cb4d5e6 Great feature| * d4a7906 Cool feature|/* 264ddbc v0.1

hotfix 单独 merge 到 dev 是偏离正轨的地方。

*   36aa1c8 (HEAD, dev) Merge branch 'hotfix' into dev|\* | 81a514a Stupendous feature* | cb4d5e6 Great feature* | d4a7906 Cool feature| | *   567f066 (master) Merge branch 'hotfix'| | |\| |/ /|/| /| |/| * 1b1b6e3 (hotfix) Fix nasty bug| * 39e449a (upstream/master) v0.2|/* 264ddbc v0.1

此时,master 不是dev 的直接祖先,而是它的兄弟。

dev 添加更多提交使 master 成为他的叔叔。

* d89aa74 (HEAD, 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 (master) Merge branch 'hotfix'| | |\| |/ /|/| /| |/| * 1b1b6e3 (hotfix) Fix nasty bug| * 39e449a (upstream/master) v0.2|/* 264ddbc v0.1

回想一下,dev 通过功能分支并通过 --no-ff merge 到达 master。也许 release-1.0 从您的修补程序开始并获得另一个错误修复。

* f0398ba (HEAD, 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 (master) Merge branch 'hotfix'| | |\| |/ /|/| /| |/| * 1b1b6e3 (hotfix) Fix nasty bug| * 39e449a (upstream/master) v0.2|/* 264ddbc v0.1

假设按下释放按钮,这将返回到 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

当然,具体的解决方案取决于您的病史。

关于git - 将修补程序 merge 到 dev 和 master 中会导致分歧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21337169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com