如何为git repo的整个master分支重新设置基础

时间:2019-09-19 01:22:01

标签: git github rebase master feature-branch

我是git的新手,因此如果这是一个简单的解决方案,我深表歉意。

我需要将回购的整个master分支重新设置为feature分支。创建了仓库,然后有人将master用作第一个功能分支。因此,我现在拥有的是:

ParentPart.Id

我想做的是

A -- B -- C -- D (branch: master)

其中Z表示仅包含.gitignore文件的提交(或其他“回购初始化提交” ... ...我什至会接受不包含文件的空白提交,但我不认为git喜欢/不允许)。

我了解如何在分支内对 中的提交进行重新计算,所以我了解如何执行此操作:

  A--B--C--D (branch: new-feature)
 /
Z (branch: master)

但是我还无法弄清楚如何将所有master都基于一个功能分支。我相信我一直面临的问题的症结在于,由于没有Z提交,所以我没有提交指向主控器的任何提交(提交A具有部分功能实现,因此我不能使用A代替Z)

提前谢谢!

1 个答案:

答案 0 :(得分:3)

为什么要打基础?只需在新功能提示上合并新的管理员基础即可。结帐master(以提供一个不错的起点)

git checkout -B feature
git branch -f master   $(git commit-tree -m 'Initial commit.' `:|git mktree`)
git merge -s ours --allow-unrelated-histories   master

生产

A ... D---E     feature
         /
        Z       master

现在历史准确反映了发生的事情,一切正常。

如果您确实想进行变基,请as the doc points out there's a --root option

git checkout -B feature
git branch -f master   $(git commit-tree -m 'Initial commit.' `:|git mktree`)
git rebase --root --onto master

如果旧的master(新的feature)中的任何分支都存在,将引起心痛。