如何将分支分支重置为主分支

时间:2015-02-23 10:02:46

标签: git branching-and-merging

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

我们说我有两个分支:masterdevelopdevelop分支由master创建,用作集成/构建分支。它没有其他目的。

在sprint结束时,所有已批准的功能分支都将合并到master中。

在sprint结束时,每个人都需要删除开发分支的本地副本,我们删除远程副本,并从master创建一个新副本。这并不理想,但我们自己使用的策略是我们同意并且适合或需要的策略。它基于每个功能的分支策略。

问题在于,如果某人没有删除他的本地副本并执行更新,他会收到一条消息,即他的本地开发分支位于远程分支之前。这是因为从前一个sprint合并但没有成为master的功能分支仍在他的本地副本上。构建基础架构本身也存在风险,因为如果我们不执行完全干净的结账,我们就会冒旧的东西存在风险。

reset --hard之类的操作不起作用,他们可能会重置我的本地副本,但我无法将这些内容推送到远程分支。

有没有办法使用提交使开发分支与主分支完全相同,而不是重新创建它?

2 个答案:

答案 0 :(得分:2)

因此,您的分支机构为masterdevelop。您想要将develop重置为master

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

或者,如果您已经删除了本地分支develop,则可以一步完成:

git push -f <remote> master:develop

这会推送本地分支master,但在遥控器上将其命名为develop

-f--force标志表示&#34;是,Git,我试图删除数据。我知道自己在做什么。&#34;在这种情况下,推送develop将丢失远程提交,但您使用-f告诉Git您想要丢失这些提交。除非您知道原因,否则请勿使用-f

答案 1 :(得分:1)

将您的本地版本更新为您想要的提交,然后强行将其推送到您的远程存储库:

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