功能分支git中的回滚更改

时间:2017-04-11 12:31:31

标签: git version-control bitbucket rollback atlassian-sourcetree

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

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

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

优良作法是定期将您的功能分支重新定义为开发,或者从开发合并到您的功能分支。

想象一个阻止开发人员处理其功能的实时错误。此修补程序已释放并合并到develop。当然不应该将修复程序复制/粘贴到功能分支中,应该将修补程序提交从develop提取(通过合并或重新绑定)到feature分支,以便开发人员可以继续在develop中目前稳定的背景。

决定是否改变或合并是由你决定 - 要么是有效的选择。关于两种工作流程的优缺点,有很多讨论。例如:https://www.atlassian.com/git/articles/git-team-workflows-merge-or-rebase

要在Sourcetree中进行rebase:在签出功能分支后,右键单击dev分支并单击rebase。 为了能够推动这些更改,您需要勾选强制推送选项,该选项必须首先在工具>选项,Git,启用强制推送中启用。

请注意,如果在rebase期间存在冲突,则需要解决它们,然后从“操作”菜单继续使用rebase。

答案 2 :(得分:1)

要使feature分支在最新的develop分支上工作(从功能分支回滚更改),您可以在提取feature分支时重新定义develop分支更改。

详细步骤为:源树中的结帐功能分支 - >拉 - >选择develop 远程分支拉 - >为选项选择Rebase instead of merge

Note:如果在rebase期间存在冲突,则需要手动解决冲突,然后逐个使用命令git add .git rebase --continue,尤其是当您对功能进行多次提交时科。或者,您可以使用命令git pull origin develop --rebase -X ours通过保持远程最新develop分支的版本来自动解决冲突文件。

以图表说明:

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

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

      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