Git重命名master分支后如何创建无提交记录的空master分支
操作步骤
- 第一步:先切换到feature/FT001分支并拉取最新代码,确保工作区无未提交的修改
确认输出无未提交的修改后再执行后续操作git checkout feature/FT001 git pull origin feature/FT001 git status - 第二步:创建无任何提交历史的孤儿master分支
git checkout --orphan master - 第三步:清空工作区所有继承自feature分支的文件,保证master分支初始状态完全为空
git rm -rf . - 第四步:提交master分支的初始空提交,生成master的根提交记录
git commit --allow-empty -m "init empty master branch" - 第五步:调整feature/FT001分支的提交基线,让所有提交对接在新master的根提交之后,模拟从master切分支开发的历史
无冲突的情况下执行后即可得到你需要的提交结构:master只有1条初始空提交,所有业务提交都在feature/FT001分支上,且分支从master节点衍生git checkout feature/FT001 git rebase master - 第六步:将本地分支推送到远端仓库
# 推送全新的master分支 git push origin master # 推送调整了历史的feature分支,--force-with-lease比强制推送更安全,不会意外覆盖他人提交 git push origin feature/FT001 --force-with-lease
验证方法
执行以下命令查看分支提交拓扑:
git log --graph --oneline --all
可清晰看到master分支为根节点,feature/FT001分支从master节点延伸的结构,后续可正常将feature/FT001合并回master。
注意:如果仓库有多名协作者,修改feature分支历史前请提前通知所有成员,推送后需让其他成员重新拉取feature/FT001分支,避免出现提交冲突
内容的提问来源于stack exchange,提问作者Drimer
相关产品推荐
相关产品推荐

