将主分支移动到另一个分支并开始新的主分支

7

我一直在使用主分支进行开发,现在想要清除它,只保留发布的提交记录,以便按照其预期的方式使用。我该如何将主分支中的所有内容复制到开发分支中,然后重置主分支呢?


你可以创建一个从主分支继承的新分支,并将默认分支更改为新分支。如果您想要更改主分支名称或新分支名称,则可以进行更改。请参见链接。 - Srikrushna
3个回答

13

从主分支创建开发分支并删除主分支,在主分支上不想保留任何提交历史记录的情况下重新创建它。

步骤1:创建开发分支

git checkout development

git push origin development

步骤2:删除主分支(如果主分支受到保护,您可能没有权限删除它,因此请在设置中取消主分支的保护)

git push origin :master

步骤 3:重新创建主分支并将其标记为受保护状态

git checkout --orphan master

git commit

git push origin master

我也遇到了这个问题,即使取消保护主分支:GitLab:无法删除项目的默认分支。我不得不将默认分支更改为另一个分支(在您的示例中为develop)。 - FrankPak

2
在主分支上,检出一个新的分支,如果已经提交了开发更改,则该分支将包含这些更改。如果没有提交,请进行提交。然后切换到主分支并重置为原始状态。
git checkout -b <branch-name>
git commit -m #if needed
git checkout master
git reset origin/master

这与另一个答案相同吗?它看起来要简单得多。 - coder
是的,看起来是这样。唯一的区别是另一个答案建议保护您的本地主分支,这很棒。 - jmoney

1
我理解您想要做两件事情:
  1. 让您当前的 master 分支指向 dev
  2. 创建一个空的 master 分支。
解决方法:
master 重命名为 dev
一种好的方法是,如其他朋友所提到的,从最新的 master 创建一个新分支,删除 master 并重新创建新的 master
git stash //保存当前更改。
git pull //拉取最新更改。
git checkout master //切换到 master 分支
git checkout -b dev //从 master 创建新分支
git branch --set-upstream dev origin/dev //将新分支添加到跟踪列表
git push //将新的 dev 分支推送到服务器
我认为其他朋友理解有所不同,请告诉我哪些是有帮助的。
我理解您想让您的 master 分支指向您的初始提交(存储库上的第一个提交),以便您只能在 master 上进行发布合并。
要完成这个操作,您需要执行以下三个步骤:
找到第一个提交。 删除旧的“master”分支。(这样更容易) 从第一个提交开始创建新的“master”。
我会这样做。
找到第一个提交。
git log --reverse --oneline // 最上面的提交将是第一个。复制它的哈希值(例如#1234)
删除旧的master分支
请记住切换当前分支到dev。不能删除正在使用的分支。
git branch -d master // 删除本地master分支
git push origin :master //删除远程master,因为我们有备份,所以这是安全的
从第一个提交创建新的master分支。
git checkout -b #1234 // 记住#1234是您的第一个提交ID。
git branch --set-upstream master origin/master //添加到新分支的跟踪
请原谅我的排版。
祝您编程愉快!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接