回滚功能分支中的更改 git

Rollback changes in feature branch git

我们在 Bitbucket 中有主要分支 developreleasemasterdevelop 分支用于当前开发。团队从 develop 创建 feature 分支,一旦代码更改完成,他们将合并 feature 分支与 develop

在某些情况下,如果我们发现错误,我们必须回滚在 UAT 中部署的某些特定更改。因此,我们将从 release 创建一个 bugfix 分支,回滚更改并与 releasedevelop 合并。但是一些开发人员可能已经开始在新创建的 feature 分支上为下一个冲刺工作。要从 feature 分支回滚相同的内容,当许多人在同一个存储库上工作时,最佳做法是什么?

由于团队正在使用 Sourcetree 客户端而不是命令行,如果有人可以建议如何在 Sourcetree 上完成它将会很有帮助。

我猜功能分支只是开发人员的本地分支?因此,只需让您的开发人员定期将他们的功能分支重新设置为 develop 分支,然后他们肯定会根据 develop 上的最新更改进行工作,包括此类回滚。

定期将您的功能分支变基到开发,或从开发合并到您的功能分支是一种很好的做法。

想象一下,一个实时错误会阻止开发人员处理他的功能。修补程序已发布并合并到 develop。当然,修复不应该 copy/pasted 到功能分支,应该将修补程序提交(通过合并或变基)从 develop 拉到 feature 分支,以便开发人员可以继续工作在 develop.

目前稳定的情况下

是变基还是合并由您决定 - 两者都是有效的选择。关于这两种工作流程的优缺点有很多讨论。例如:https://www.atlassian.com/git/articles/git-team-workflows-merge-or-rebase

在 Sourcetree 中变基:选中功能分支后,右键单击开发分支并单击变基。 为了能够推送这些更改,您需要勾选 Force push 选项,该选项必须首先在 Tools>Options, Git, Enable Force Push 中启用.

请注意,如果在变基过程中发生冲突,您需要解决它们,然后从“操作”菜单继续变基。

要使 feature 分支在最新的 develop 分支上工作(从功能分支回滚更改),您可以在拉取 develop 分支时对 feature 分支更改进行 rebase。

详细步骤为:检出源代码树中的功能分支 -> 拉取 -> select develop 拉取远程分支 -> select Rebase instead of merge 对于 选项.

Note:如果rebase时有冲突,需要手动解决冲突,然后使用命令git add .git rebase --continue一个一个的执行,尤其是commit很多的时候在功能分支上。或者您可以使用命令 git pull origin develop --rebase -X ours 通过保持远程最新 develop 分支的版本来自动解决冲突文件。

用图说明:

      E---F    feature(HEAD)
     /         
A---B---C---D  develop

在来自远程的 develop 分支上有新提交 G

      E---F        feature(HEAD)
     /         
A---B---C---D---G  origin/develop
            |
         develop

使用后git pull origin develop --rebase:

                  E---F   feature(HEAD)
                 /         
A---B---C---D---G         origin/develop