Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何重置并将其应用于所有用户本地banches?_Git_Feature Branch - Fatal编程技术网

Git 如何重置并将其应用于所有用户本地banches?

Git 如何重置并将其应用于所有用户本地banches?,git,feature-branch,Git,Feature Branch,我们有这样的分支机构: 主控(生产上构建/部署) qa(在问答环境中构建/部署) 特色分支 因此,我们从master创建一个特性分支,然后在需要通过Q&a验证特性时将其合并到qa(从master创建) 有时我们需要从master重建qa,因为一些开发直接合并到master(小开发或bug修复) 我所做的: git checkout qa git reset --hard master git push --force origin qa 所以遥控器现在正是我想要的 但是现在,当其他开发人员

我们有这样的分支机构:

  • 主控(生产上构建/部署)
  • qa(在问答环境中构建/部署)
  • 特色分支
因此,我们从master创建一个特性分支,然后在需要通过Q&a验证特性时将其合并到qa(从master创建)

有时我们需要从master重建qa,因为一些开发直接合并到master(小开发或bug修复)

我所做的:

git checkout qa
git reset --hard master
git push --force origin qa
所以遥控器现在正是我想要的

但是现在,当其他开发人员执行
git fetch
时,他们在本地
qa
上的所有提交都会显示为传出提交。这似乎合乎逻辑。我们不得不在每个人的机器上进行一次git重置--hard origin/qa,但这有点危险

还有其他解决办法吗


编辑:我们为什么要这样做:qa分支上的某些功能被放弃,因此我们需要从master重新创建qa分支,然后在其上合并所有其他分支。

完成后,
git push--force
对所有客户端强制pull是唯一的选项。为了降低危险性,首先创建一个临时分支以在客户端上保留分支
qa
,执行强制拉操作,然后从保留的
qa
中选择提交并删除临时分支。

在执行
git推操作后,强制拉所有客户端是唯一的选项。为了降低危险性,首先创建一个临时分支以在客户端上保留分支
qa
,执行强制拉操作,然后从保留的
qa
中选择提交并删除临时分支。

您正在使用(可能不知道)Adam Dymitruk的“”工作流,这确实是一个很棒的工作流

请注意,Dymitruk建议您在每次更改任何内容时从头开始重新创建
qa
(即从
master
),而不仅仅是在您希望“取消合并”功能时

这意味着:只需删除
qa
分支并完全重建它;注意以完全相同的顺序合并所有功能分支。显然,您还希望激活
git-rere
缓存,并确保所有开发人员彼此同步该缓存(当然使用
git

因此,在任何地方都不会有奇怪的合并或重置,每次都会有一个干净、新鲜的
qa
。整个操作最好在一些脚本的帮助下完成,或者由CI/CD代理自动完成

查看Dymitruk的网站了解完整的描述。

您正在使用(可能不知道)Adam Dymitruk的“”工作流,这确实是一个很棒的工作流

请注意,Dymitruk建议您在每次更改任何内容时从头开始重新创建
qa
(即从
master
),而不仅仅是在您希望“取消合并”功能时

这意味着:只需删除
qa
分支并完全重建它;注意以完全相同的顺序合并所有功能分支。显然,您还希望激活
git-rere
缓存,并确保所有开发人员彼此同步该缓存(当然使用
git

因此,在任何地方都不会有奇怪的合并或重置,每次都会有一个干净、新鲜的
qa
。整个操作最好在一些脚本的帮助下完成,或者由CI/CD代理自动完成


查看Dymitruk的网站以了解完整的描述。

我不太了解您的用例。你为什么不简单地将qa重新设置到master上?我不明白-你将
qa
重置为
master
,但按
prepod
branch?@phd,我的错,我编辑了it@running.t,我为添加用例进行了编辑。我不太了解您的用例。你为什么不简单地将qa重新设置到master上?我不明白-你将
qa
重置为
master
,但按
prepod
branch?@phd,我的错,我编辑了it@running.t,我编辑以添加用例,我们确实在使用这个流(我们知道它)。我们试图删除qa分支,然后从master中创建它,但开发人员一直在推动提交,该提交不在新qa分支上,而是在旧qa分支上,他们必须删除本地qa,签出并将其功能合并到其中。@Reibourgarel:是的,他们这样做了。在我看来,工作流程的这一部分(重新创建qa)是有史以来最伟大的事情,也是在团队中取得成功的诅咒。必须严格禁止直接提交到qa,否则会出现严重问题。事实上,使用VS2017,我们将尝试创建钩子来避免它(您在qa分支上,因为您刚刚进行了合并,忘记返回到您的功能),我们确实在使用此流(我们知道这一点)。我们试图删除qa分支,然后从master中创建它,但开发人员一直在推动提交,该提交不在新qa分支上,而是在旧qa分支上,他们必须删除本地qa,签出并将其功能合并到其中。@Reibourgarel:是的,他们这样做了。在我看来,工作流程的这一部分(重新创建qa)是有史以来最伟大的事情,也是在团队中取得成功的诅咒。必须严格禁止直接提交到qa,否则会出现严重问题。事实上,使用VS2017,我们将尝试创建钩子来避免它(您在qa分支上,因为您刚刚进行了合并,忘记返回到您的功能)