是否可以将远程分支重置为另一个远程分支?
我们说我有两个分支:master
和develop
。 develop
分支由master
创建,用作集成/构建分支。它没有其他目的。
在sprint结束时,所有已批准的功能分支都将合并到master中。
在sprint结束时,每个人都需要删除开发分支的本地副本,我们删除远程副本,并从master创建一个新副本。这并不理想,但我们自己使用的策略是我们同意并且适合或需要的策略。它基于每个功能的分支策略。
问题在于,如果某人没有删除他的本地副本并执行更新,他会收到一条消息,即他的本地开发分支位于远程分支之前。这是因为从前一个sprint合并但没有成为master的功能分支仍在他的本地副本上。构建基础架构本身也存在风险,因为如果我们不执行完全干净的结账,我们就会冒旧的东西存在风险。
reset --hard
之类的操作不起作用,他们可能会重置我的本地副本,但我无法将这些内容推送到远程分支。
有没有办法使用提交使开发分支与主分支完全相同,而不是重新创建它?
答案 0 :(得分:2)
因此,您的分支机构为master
和develop
。您想要将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