我有以下情况:
A - B - C - ... DEVELOP
\
Z - X - ... FEATURE
我创建了 FEATURE 分支来实现我们项目中的一些功能。在我在那里做了一些工作之后,我在代码中发现了一个错误,应该先修复它。在修复错误之前,我无法完成该功能。该错误不仅与功能相关,因此应在 DEVELOP 分支中修复。
问题是,DEVELOP 和 FEATURE 分支是公开的。
我很困惑,不知道该怎么办。但是必须有一个明确的解决方案吗?
当您说分支机构是公开的时,您的意思是什么?问题是什么?
好吧,如果我理解正确的话,这种情况下的解决方案是从开发中打开一个新分支:
git checkout -b hotfix develop
在 hotfix 分支中进行更正并将 hotfix 分支合并到两个分支中:feature 和 develop。
您是否关心 FEATURE 从 DEVELOP 分支后的提交是否从修补程序进入 FEATURE?
您有以下选择:
起初
A - B - C - ... DEVELOP
\
Z - X - ... FEATURE
1. 独立的修补程序并合并到两者:只有修补程序 H,而不是提交 B 或 C,被合并到 FEATURE。
A - B - C - D... DEVELOP
|\ /
| H ------ HOTFIX
\ \
Z - X - Y... FEATURE
2. 修复 DEVELOP,然后通过合并将 FEATURE 更新为修补程序。这意味着提交 B、C 和 H 被合并到 FEATURE 中。如果您无法与他们协调更改,这对于使用/基于 FEATURE 的其他开发人员来说可能是一个问题。
A - B - C - H... DEVELOP
\ \
Z - X ------Y... FEATURE
3. 修复 DEVELOP,然后将 FEATURE 重新设置为修补程序或稍后在 DEVELOP 上提交- 更改 B、C 和 H 被合并到 FEATURE 中。仅当您对 rebase 感到满意并且可以与其他开发人员安全地协调 rebase 时才这样做。如果当您说 FEATURE 是公开的时,您的意思是完全开放的,世界上任何人都可能正在开发 FEATURE,那么这不是您的选择。
A - B - C - H... DEVELOP
\
Z - X -... FEATURE
在所有情况下,Git 都会将 FEATURE 合并回 DEVELOP 中。您迟早仍必须解决任何冲突,无论修补程序问题如何,都是如此。