Git 用一个孤立分支重写master,但保留历史
在我的项目中,我从Git 用一个孤立分支重写master,但保留历史,git,Git,在我的项目中,我从master分支中的许多提交开始。在几次发布之后,我意识到我所采取的方法可能根本不是我们想要的 新方法需要完全重写代码,所以我决定从孤立分支开始(a-new-start-branch)。我喜欢它,最终,它成为了我事实上的主要分支。现在我想用a-new-start替换master 我发现,但当按照此处显示的步骤操作时,我收到错误消息致命:拒绝合并不相关的历史记录。我知道我可以使用–allow unrelated history选项,但我不太明白它的作用,也不想破坏东西 我也找到了
master
分支中的许多提交开始。在几次发布之后,我意识到我所采取的方法可能根本不是我们想要的
新方法需要完全重写代码,所以我决定从孤立分支开始(a-new-start-branch
)。我喜欢它,最终,它成为了我事实上的主要分支。现在我想用a-new-start
替换master
我发现,但当按照此处显示的步骤操作时,我收到错误消息致命:拒绝合并不相关的历史记录
。我知道我可以使用–allow unrelated history
选项,但我不太明白它的作用,也不想破坏东西
我也找到了,但我不想删除主分支中的历史记录
理想情况下,我希望以直系历史结束,但如果不可能的话,我也会很乐意进行某种合并
任何想法都将不胜感激 您是否尝试在新分支中对母版重定基址 1-
$git checkout a-new-start-branch
2-$git重新基址主节点
您的新分支现在包含
a-new-start-branch
和master分支的历史记录,我不明白您为什么要用a-new-start
分支保留当前master
分支的当前历史记录
如果您的目标只是让一个名为master
的分支具有a-new-start
分支的历史记录,您可以这样执行:
git branch -m master master-backup
git push origin :master master-backup
git branch -m a-new-beginning master
git push origin :a-new-beginning master
这样,您将在本地和远程更新分支。正如您所说,您可以使用——允许不相关的历史记录。此选项允许在没有常见提交时合并数据。在这种情况下,这似乎是我们更好的解决方案
我们可以这样做:
git checkout better_branch
git merge --allow-unrelated-histories --strategy=ours master # keep the content of this branch, but record a merge
git checkout master
git merge better_branch # fast-forward master up to the merge
第一次合并获得与旧主人的新分支的相关历史记录。
第二次合并将新分支数据作为主数据
您可以使用git diff master..better\u branch^
检查合并是否正常。Diff应该为空