回滚功能分支中的更改 git
Rollback changes in feature branch git
我们在 Bitbucket 中有主要分支 develop
、release
和 master
。 develop
分支用于当前开发。团队从 develop
创建 feature
分支,一旦代码更改完成,他们将合并 feature
分支与 develop
。
在某些情况下,如果我们发现错误,我们必须回滚在 UAT
中部署的某些特定更改。因此,我们将从 release
创建一个 bugfix
分支,回滚更改并与 release
和 develop
合并。但是一些开发人员可能已经开始在新创建的 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
我们在 Bitbucket 中有主要分支 develop
、release
和 master
。 develop
分支用于当前开发。团队从 develop
创建 feature
分支,一旦代码更改完成,他们将合并 feature
分支与 develop
。
在某些情况下,如果我们发现错误,我们必须回滚在 UAT
中部署的某些特定更改。因此,我们将从 release
创建一个 bugfix
分支,回滚更改并与 release
和 develop
合并。但是一些开发人员可能已经开始在新创建的 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