我们当前的工作流程是,每周一早上,我们都希望放弃所有合并到 temp
分支的提交,并将其镜像到最新版本的 master
分支。
然而,在整个星期内,不同的开发人员将提交到临时分支,这些提交将被推送到 Gitlab。我们想完全重置 temp
分支并将其恢复到 master
分支。
答案 0 :(得分:1)
有多种方法可以实现这一点。这里有两个相当直接的方法:(注意这些方法假设你的远程名称是“origin”):
git fetch # make sure your remote copy of master is updated
git checkout temp # checkout the temp branch if not already
git reset --hard origin/master # reset temp to remote master
git push --force # push out the new temp branch to origin/temp
如果您愿意,可以将中间的两个命令合二为一:
git fetch # make sure your remote copy of master is updated
git checkout -B temp origin/master # checkout/create temp and reset to origin/master
git push --force # push out the new temp branch to origin/temp
附注:在强制推送时,我几乎总是建议使用 git push --force-with-lease
,这样您就不会意外地将您不知道的遥控器上的提交吹走。但是,我认为这是您确实想要使用 git push --force
的罕见情况之一,因为听起来您无论如何都想重置 temp
分支;即使有人在几分钟前向该分支推送了新提交。
另一个注意事项:Git 存储库本身使用一种名为 Gitworkflows 的分支策略,与您的策略一样,它有一个用于集成测试的一次性分支,并且是定期复位。 Git 维护者称该分支为 next
,它代表“下一个”版本的候选功能。 (甚至还有一个名为 pu
的第二级丢弃分支用于“建议的更新”。)只是想知道您是否有兴趣知道您正在使用(n 可以说)经过验证的真实策略,至少关于您的temp
分支。