Git 流程问题,合并掌握和发展
Git flow question, merging to master and develop
我目前正在使用 git flow with sourcetree。冲刺的工作已达成一致,我创建了开发分支以将代码提交到其中。我将功能分支合并到开发中,然后在 sprint 结束时我合并到主分支并将代码投入生产。
这很好用,但是,如果修复需要推送到 master,或者如果其他工作被纳入 sprint,提交需要进行排序,然后 cherry pick 到 master,这会变得非常混乱。
这可能会导致很多阻碍,因为在将其他工作提交到开发之前,需要将工作推送到 master、测试和签署。
有没有办法安全地引入新工作并致力于开发?
按照下面的 git-flow 图片:
如果您需要修复一些需要花费大量时间的问题,您可以从 master 转到 develop(如果您有修复 css 、代码样式等快速任务,请开始大修复...) .
在您的情况下,您可以开始一个新功能,完成后您可以使用 :
合并开发
- git合并
- git 变基
- git 樱桃挑选
或使用 git-flow 命令:
- git 流功能完成
希望对你的工作有所帮助。
I merge the feature branches into develop, then at the end of sprint I merge to master and code goes into production.
如果您愿意,您当然可以这样做,但通常在 Git Flow 中,您不会将 develop
直接 合并到 master
由于您 运行 的具体问题:
This can cause lots of blockers, as work needs to be pushed to master, tested and signed off before other work can be committed into develop.
Git Flow 避免这些问题的方法是使用 release
和 hotfix
分支。 (See diagram 了解详情。)
您只需在发布前创建一个 release
分支用于测试,因此 develop
的工作永远不必停止。 (请注意,您不必从 develop
的尖端创建一个 release
分支;您可以使用您希望从中分支的任何先前提交。)
当您需要对生产进行修补程序时,您可以创建 master
的 hotfix
分支。
在您的代码从 release
或 hotfix
分支合并到 master
之后,您还需要将 master
合并回 develop
。 (或者您可以在将 release
和 hotfix
分支合并回 develop
之前将它们合并到 master
,但是在将 master
合并回 master
之后恕我直言稍微干净一些更易于管理。)
旁注: release
和 hotfix
分支通常定义明确,但是,由于您目前在没有它们的情况下工作,您仍然 可以在没有它们的情况下工作,但有一些细微的调整。例如,假设您使用当前 develop
并开始在某处测试构建,然后您喜欢它并希望将其发布到生产环境中。您实际上有一个 release
分支,但没有命名。它只是您测试的提交 ID。发布时,只需将该提交 ID 从 develop
合并到 master
中,而不是 develop
中,后者可能在该提交之前。这样,您就不会在开始测试后合并 develop
上发生的任何新代码。从本质上讲,这与制作专用的 release
分支相同,但没有实际命名。修补程序也是如此。通常,修补程序是单个提交中的微小更改。我建议从 master 分支到某个分支,但它不必被称为 hotfix
;任何名字都可以。然后 PR 分支到 master
并在完成后将 master
合并回 develop
,或者,如 Git Flow 指出的那样,如果 release
分支已经存在,然后将 master
合并回 release
而不是 develop
(尽管如果您希望尽快修复,也可以将 release
合并回 develop
)。
旁注: 我听到的关于 Git Flow 最常见的抱怨是它不必要地复杂。我发现复杂性对于某些组织来说是绝对必要的,当然对于其他组织来说则没有必要。您可以挑选并选择您希望使用的部分,并在必要时进行调整。如果您还不需要 release
分支,那很好 - 只需调整您的工作流程,以便在发布时仅将 develop
中的提交 ID 合并到 master
中。但是,如果您发现需要针对该提交 ID 进行错误修复,也许您可以即时创建一个 release
分支。这是你可以在没有专用 release
分支 大多数 时间的情况下获得。
我目前正在使用 git flow with sourcetree。冲刺的工作已达成一致,我创建了开发分支以将代码提交到其中。我将功能分支合并到开发中,然后在 sprint 结束时我合并到主分支并将代码投入生产。
这很好用,但是,如果修复需要推送到 master,或者如果其他工作被纳入 sprint,提交需要进行排序,然后 cherry pick 到 master,这会变得非常混乱。
这可能会导致很多阻碍,因为在将其他工作提交到开发之前,需要将工作推送到 master、测试和签署。
有没有办法安全地引入新工作并致力于开发?
按照下面的 git-flow 图片:
如果您需要修复一些需要花费大量时间的问题,您可以从 master 转到 develop(如果您有修复 css 、代码样式等快速任务,请开始大修复...) . 在您的情况下,您可以开始一个新功能,完成后您可以使用 :
合并开发- git合并
- git 变基
- git 樱桃挑选 或使用 git-flow 命令:
- git 流功能完成
希望对你的工作有所帮助。
I merge the feature branches into develop, then at the end of sprint I merge to master and code goes into production.
如果您愿意,您当然可以这样做,但通常在 Git Flow 中,您不会将 develop
直接 合并到 master
由于您 运行 的具体问题:
This can cause lots of blockers, as work needs to be pushed to master, tested and signed off before other work can be committed into develop.
Git Flow 避免这些问题的方法是使用 release
和 hotfix
分支。 (See diagram 了解详情。)
您只需在发布前创建一个 release
分支用于测试,因此 develop
的工作永远不必停止。 (请注意,您不必从 develop
的尖端创建一个 release
分支;您可以使用您希望从中分支的任何先前提交。)
当您需要对生产进行修补程序时,您可以创建 master
的 hotfix
分支。
在您的代码从 release
或 hotfix
分支合并到 master
之后,您还需要将 master
合并回 develop
。 (或者您可以在将 release
和 hotfix
分支合并回 develop
之前将它们合并到 master
,但是在将 master
合并回 master
之后恕我直言稍微干净一些更易于管理。)
旁注: release
和 hotfix
分支通常定义明确,但是,由于您目前在没有它们的情况下工作,您仍然 可以在没有它们的情况下工作,但有一些细微的调整。例如,假设您使用当前 develop
并开始在某处测试构建,然后您喜欢它并希望将其发布到生产环境中。您实际上有一个 release
分支,但没有命名。它只是您测试的提交 ID。发布时,只需将该提交 ID 从 develop
合并到 master
中,而不是 develop
中,后者可能在该提交之前。这样,您就不会在开始测试后合并 develop
上发生的任何新代码。从本质上讲,这与制作专用的 release
分支相同,但没有实际命名。修补程序也是如此。通常,修补程序是单个提交中的微小更改。我建议从 master 分支到某个分支,但它不必被称为 hotfix
;任何名字都可以。然后 PR 分支到 master
并在完成后将 master
合并回 develop
,或者,如 Git Flow 指出的那样,如果 release
分支已经存在,然后将 master
合并回 release
而不是 develop
(尽管如果您希望尽快修复,也可以将 release
合并回 develop
)。
旁注: 我听到的关于 Git Flow 最常见的抱怨是它不必要地复杂。我发现复杂性对于某些组织来说是绝对必要的,当然对于其他组织来说则没有必要。您可以挑选并选择您希望使用的部分,并在必要时进行调整。如果您还不需要 release
分支,那很好 - 只需调整您的工作流程,以便在发布时仅将 develop
中的提交 ID 合并到 master
中。但是,如果您发现需要针对该提交 ID 进行错误修复,也许您可以即时创建一个 release
分支。这是你可以在没有专用 release
分支 大多数 时间的情况下获得。