当我将我的发布分支合并到 main,然后合并到 dev 以合并那里的更改时,我的开发人员说它是 X 提交在前,X 提交在后。为什么?
When I merge my release branch into main, and then into dev to incorporate the changes there, my dev says it's X commits ahead, X commits behind. Why?
我正在关注 git 流程分支 model。我非常严格地遵循指南。
- 我从 dev 创建了一个发布分支,并在那里进行了最终的错误修复和调整
- 然后我把这个合并到main,再合并到dev,然后删除release分支
- 我在将我的发布分支合并到主分支和开发分支时使用 --no-ff(无快进)标志
- 我目前唯一没有遵循的是在将发布的更改合并到其中后从 git 标记我的主要内容。相反,我使用发布功能从 GitHub 回购中标记它。
但是,我的开发分支现在是这样说的:
This branch is 1 commit ahead, 1 commit behind main.
我对此感到困惑。似乎每个分支上的新合并提交(由将 release 合并到 dev 和 main 引起)是唯一的区别。这应该发生吗?我做错了什么吗?
这完全没问题,在某些情况下也是意料之中的。让我们来看看发生了什么:
- 您从
develop
的顶端创建了分支 release
。此时 develop
和 release
相同。
- 您向
release
添加了一些带有错误修复的提交(或者没有,就此问题而言,它实际上并没有改变结果)。
- 一旦您对
release
感到满意,您就可以部署它并使用 --no-ff
(没有 fast-forward)标志将其合并到 main
中。这会在 main
上创建一个新的合并提交。所以此时 release
和 main
具有相同的内容,但是 main
有一个额外的提交。
- 现在您还使用
--no-ff
将 release
合并回 develop
。这会在 develop
上创建一个不在 release
或 main
. 上的新提交
- 现在你删除
release
.
所以在这一点上,develop
至少有 1 个不在 main
上的提交,并且 main
有恰好 一项不在 develop
中的提交。据推测,自从创建 release
分支以来,您没有向 develop
添加任何提交,因此 develop
正好比 main
早 1 次提交,正好比 main
晚 1 次提交 main
.
注意: 下次您执行 release
分支时将发生相同的过程,但您最终会在 main
上进行 2 次提交不在 develop
中,这将继续递增,直到您执行第一个 hotfix
分支,这将一次性将所有那些较旧的合并提交带回 develop
。这是预料之中的,但您第一次看到它时可能会感到困惑。
提示: 在经历了 hotfix
分支将许多合并提交带回 develop
之后,现在当我在使用 [=86= 的 repos 中工作时] Flow,在将release
合并成main
之后,我更愿意将main
合并成develop
,而不是将release
合并成develop
。内容将相同,但现在 develop
不再落后于 main
。这还有一个额外的好处,那就是在部署之前更容易确定 release
分支是否与 main
完全同步;您只需要确保 master
指向的提交也在 release
.
中
我正在关注 git 流程分支 model。我非常严格地遵循指南。
- 我从 dev 创建了一个发布分支,并在那里进行了最终的错误修复和调整
- 然后我把这个合并到main,再合并到dev,然后删除release分支
- 我在将我的发布分支合并到主分支和开发分支时使用 --no-ff(无快进)标志
- 我目前唯一没有遵循的是在将发布的更改合并到其中后从 git 标记我的主要内容。相反,我使用发布功能从 GitHub 回购中标记它。
但是,我的开发分支现在是这样说的:
This branch is 1 commit ahead, 1 commit behind main.
我对此感到困惑。似乎每个分支上的新合并提交(由将 release 合并到 dev 和 main 引起)是唯一的区别。这应该发生吗?我做错了什么吗?
这完全没问题,在某些情况下也是意料之中的。让我们来看看发生了什么:
- 您从
develop
的顶端创建了分支release
。此时develop
和release
相同。 - 您向
release
添加了一些带有错误修复的提交(或者没有,就此问题而言,它实际上并没有改变结果)。 - 一旦您对
release
感到满意,您就可以部署它并使用--no-ff
(没有 fast-forward)标志将其合并到main
中。这会在main
上创建一个新的合并提交。所以此时release
和main
具有相同的内容,但是main
有一个额外的提交。 - 现在您还使用
--no-ff
将release
合并回develop
。这会在develop
上创建一个不在release
或main
. 上的新提交
- 现在你删除
release
.
所以在这一点上,develop
至少有 1 个不在 main
上的提交,并且 main
有恰好 一项不在 develop
中的提交。据推测,自从创建 release
分支以来,您没有向 develop
添加任何提交,因此 develop
正好比 main
早 1 次提交,正好比 main
晚 1 次提交 main
.
注意: 下次您执行 release
分支时将发生相同的过程,但您最终会在 main
上进行 2 次提交不在 develop
中,这将继续递增,直到您执行第一个 hotfix
分支,这将一次性将所有那些较旧的合并提交带回 develop
。这是预料之中的,但您第一次看到它时可能会感到困惑。
提示: 在经历了 hotfix
分支将许多合并提交带回 develop
之后,现在当我在使用 [=86= 的 repos 中工作时] Flow,在将release
合并成main
之后,我更愿意将main
合并成develop
,而不是将release
合并成develop
。内容将相同,但现在 develop
不再落后于 main
。这还有一个额外的好处,那就是在部署之前更容易确定 release
分支是否与 main
完全同步;您只需要确保 master
指向的提交也在 release
.