拉取请求成功后继续使用开发分支?



我有一个非常基本的场景,但我不明白正确的处理方法是什么。

我有一个主分支和一个开发分支

Master 不直接接收提交,我提交以开发触发 AWS 代码管道 - 这些经过测试批准,如果可以,我会发出拉取请求

拉取请求与主合并(不确定我是否这样做正确,我使用 github 的变基和合并选项)。

到目前为止,一切都很好。

现在我想继续做一些工作,所以我对开发进行了更多提交,并准备做一个新的拉取请求。我的问题是现在它说它将完成自我最初创建 Develop 分支以来的所有提交,而不仅仅是自拉取请求以来的提交。

我可以在每个拉取请求后删除 develop并重新制作它,但这会在代码管道中出错,我宁愿继续开发,并以某种方式内联这些。

我不知道缺少什么步骤,我真的可以使用一些帮助,我尝试在这里和谷歌上寻找类似的问题,但没有真正匹配

。如果我在这个问题上犯了一个错误,那没关系,但向前迈进,我真的很感激知道正确的步骤,使这个过程顺利进行。

如果这很重要,我正在使用 Github 桌面,但如果需要命令行,那很好。

鉴于此:

master没有直接收到提交,我会向触发 AWS 代码管道的develop提交 - 这些提交经过测试批准,如果可以,我会发出拉取请求

我将首先关注以下几句话:"这些已经过测试批准,如果可以的话......">

这表明如果测试失败,您将修复develop并推送更改以查看修复尝试是否有效。鉴于此,develop不一定是"好"分支,就像master是"好"分支一样。相反,您将develop视为"功能"或"主题"分支,这是一个正在进行的工作,直到您正确为止。鉴于此,我喜欢您定期重置develop的建议,如果您是目前develop分支的唯一用户,那么在每次 PR 进入master后重置是有意义的。关于管道中断的问题:

我可以在每个拉取请求后删除开发并重新制作它,但这会在代码管道中出错

并在您的评论中澄清:

错误发生在管道中,因为分支已被删除,因此管道尝试运行但失败,并显示类似于找不到分支的消息。

对此的简单解决方案是永远不要实际删除develop分支。相反,只需重置它,也许像这样:

git fetch
git switch develop
git reset --hard origin/master
git push --force

这样,分支将始终存在,管道不会抱怨找不到分支。

分支名称提示:尽管只要您(和您的团队,如果您有的话)确切了解它们是什么以及它们如何工作,分支名称实际上并不重要,但我会考虑将您的develop分支重命名为其他名称。分支名称develop通常与名为 Git Flow 的工作流相关联,在这种情况下,develop分支将永远存在,通常永远不会重置。通常,测试将在功能分支上完成,直到它们准备就绪,然后将它们合并到develop中,目的是使其始终处于"良好"状态。您当前使用的工作流更类似于 GitHub Flow。在该流程中,master您可以使用相关的命名功能分支(例如user/b2020/add-new-cool-thingfeature/add-new-cool-thing),然后在完成后将其合并到master中并删除该分支。请注意,您可能同时有多个功能分支,尤其是在添加更多团队成员时。大多数测试管道将使您能够测试多个分支名称,(例如feature/*user/*等),但如果你想锁定到一个特定的分支名称,我建议把它叫做next,这是 Git 的维护者在 gitworkflow 中所说的他们的短期测试分支。如果你有多个开发人员,每个人仍然会从master中创建功能分支,但在完成合并到master之前,先将它们合并到next进行测试。然后在有意义的情况下定期重置next。如果您愿意,您可以在每次 PR 后执行此操作;在我的公司,我们目前每周一早上都会这样做。现在,如果您喜欢只处理一个分支,请考虑将develop分支重命名为next,您可以直接提交,直到您有其他团队成员,或者直到您决定并行处理多个功能。在重命名分支时,如果您愿意,也可以将master重命名为main

最新更新