我们在Bitbucket中有主要分支develop
,release
和master
。 develop
分支用于当前开发。团队从feature
创建develop
分支,一旦代码更改完成,他们将合并feature
分支与develop
分支。
在某些情况下,如果我们发现错误,我们必须回滚部署在UAT
中的某些特定更改。因此,我们将从bugfix
创建release
分支,回滚更改并与release
和develop
合并。但是一些开发人员可能已经开始为新创建的feature
分支机构的下一个sprint工作。要从feature
分支回滚相同的内容,当许多人在同一个存储库上工作时,最佳做法是什么?
由于团队正在使用 Sourcetree 客户端而不是命令行,如果有人可以建议如何在Sourcetree上完成它,将会很有帮助。
答案 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