放轻松 - 我是一名 QA,正在学习 Git!
这应该非常简单。我的存储库在 Bitbucket 中。
由于各种原因,我有一个分支 origin/master,现在包含旧代码。我在 origin/develop 有一个包含最新代码的。两者都有跟踪每个的本地分支机构。我不想合并它们。
我很高兴完全失去 origin/master(我将它克隆为“旧的”作为备份)并希望开发成为 master。
建议通过终端执行此操作的 Git 命令是什么?
答案 0 :(得分:0)
据我所知,重命名远程分支是一项危险的操作,因为无法直接重命名远程分支(除非您在远程仓库本身上进行重命名)。这意味着在 develop
分支上工作的所有开发人员都必须fetch
新的 master
并将其起点设置在他们的 develop
的尖端。然后他们可以删除他们本地的 develop
分支。对于这个解决方案,我假设没有人在研究 master
。
git branch -d master
git branch -d -r origin/master
git branch -d -r origin/develop
git branch -M develop master
git push -f -u origin master
git fetch origin develop
git push -d origin develop
我基本上是删除 master
,以便我可以将 develop
重命名为 master
。然后我强行(-f
)推送新的master
,我获取develop
(它现在指向与master
相同的提交)以便在之后立即远程删除它.为完整起见:如果有人一直在研究 master
,那么使用 git push --force-with-lease -u origin master
会更安全。有关详细信息,请参阅 here。
答案 1 :(得分:0)
Marco 给出了很好的答案,但我认为这不应该是您问题的本质。
看到您刚刚开始使用 Git 进行版本控制,我认为您应该问自己:“使用 Git 时我应该如何处理这些场景?”
答案不是“删除 master
分支并将其替换为 develop
”。
使用 Git 的主要原因是能够保存您的历史记录。如果您到了要删除 master 分支的地步,您可能还想完全创建一个新存储库!
相反,为什么不简单地将 develop
合并到 master
中?
这样,你可以保存你的历史记录,最终结果是完全一样的。
如果您现在正在编写新项目的第一行,并且想要隐藏丑陋的历史并为您的项目创建一个新的石板,只需到您对 MVP 感到满意的程度并从头开始重新创建存储库步骤一步一步。你也会从这个过程中学到很多东西。它甚至可以帮助您了解最初应该如何做。
(专业提示:如果您是高级 Git 用户,我可能会告诉您只使用交互式 rebase 来重写 master
的历史记录)