Git: 多分支部署工作流程

Git: multiple branches deployment workflow

我正在尝试了解在使用多个分支时如何最好地改进我的工作流程,每个分支都将部署到特定环境。

让我们先说我正在使用 BitBucket 托管我的 git 存储库,我在上面有三个分支:origin/masterorigin/stagingorigin/production

每当我完成一项新任务时,我都会将该任务提交到我的本地分支 master,然后将其推送到 origin/master。之后,如果我想将该提交部署到暂存区,我只需打开分支和 运行 a "sync"(使用 BitBucket 功能),以便分支 origin/stagingorigin/master 匹配.

但是,当我查看 SourceTree 上的存储库时,我感觉自己弄得一团糟,这可能不是正确的做法。

这是存储库在 SourceTree 上的样子:

这是它在 BitBucket 上的样子:

首先:为什么说origin/productionorigin/staging分别比origin/master提前4次和6次提交?

其次,如果我正在做的事情wrong/can有待改进,你会建议我做什么?

productionstaging 位于 master 分支之前,因为存在 master 中不存在的合并提交。您可以在 SourceTree 屏幕截图中轻松看到这一点:origin/production 是在 master 之前进行的四次(合并)提交,这四次提交带有 Merged master into production 消息。它与您的 staging 分支相似。

您之所以会遇到这种情况,是因为您反复将 master 分支合并到其他分支,但从未将其他分支合并回 master。这没有错。只要 "Ahead" 计数不打扰您,您就大功告成了。如果您希望在 master 之前没有提交,您可以将 productionstaging 合并回 master。这不会更改您的任何数据,合并提交也会成为您 master 历史记录的一部分。