如何重置一个发散的分支回主(How can I reset a diverged branch ba

2019-10-22 01:24发布

是否可以远程分支重置到另一个远程分支?

比方说,我有两个分支: masterdevelop 。 该develop分支,从制作master ,并作为一个集成/编译分支。 它没有其他目的。

在冲刺都设有分公司,其中被批准的结束,被合并到主。

在冲刺的最后,每个人都被要求删除他的本地develop分支的副本,我们删除远程之一,而一个新的由船长提出的。 这不是理想的,但是我们用自身战略所商定的一个和最好成绩西装或需求。 它是松散的基础上分支每个功能的策略。

问题是,如果有人不删除自己的本地副本,并进行更新,他得到他的本地开发分支是提前一台远程的消息。 这是因为,这是从以前的冲刺合并了,但并没有使之成为主功能分支仍然在他的本地副本。 构建基础设施本身也有风险,因为如果我们不执行一个完全干净的检出我们的风险旧的东西仍然存在。

像操作reset --hard不工作,他们可能会重置我的本地副本,但我无法通过远程分支推这些。

有没有一种方法,使使用的提交,而不是重新创建develop分支完全等同于主分支?

Answer 1:

所以,你的分支是masterdevelop 。 要重置developmaster

git checkout develop
git reset --hard master
git push -f <remote> develop

或者,如果你已经删除的本地分支develop ,你能做到在一个步骤:

git push -f <remote> master:develop

这推动了当地的分支机构master ,但将其命名为develop遥控器上。

-f--force标志的意思是“是的,Git的,我想删除的数据。我知道我在做什么。” 在这种情况下,推动develop就失去了远程提交,但您使用-f告诉Git的,你不想失去这些提交。 切勿使用-f除非你知道这是为什么。



Answer 2:

更新您的本地版本到你想要的承诺,然后用力将其推送到你的远程仓库:

git fetch origin
git branch -f develop origin/master
git push origin develop --force


文章来源: How can I reset a diverged branch back to master