问题描述
beta 分支上是本项目从零重构的『新版本』,后续 master 与 beta 将分开维护,实际两个版本也无关联。因此不希望在 beta 分支看见 master 的历史记录,而是生成一个独立分支 (next) 。
解决方法
-
生成一个没有提交记录的空分支 next ,此时暂存区存有原 HEAD 的内容。
git checkout --orphan next -
使用
git rm --cached <filename>,将变更移出暂存区,删除所有变更(保留 .git),使当前看起来像一个新的项目。 -
拷贝 master-HEAD 到 beta-HEAD ,不包括 master-HEAD 。
git cherry-pick master...beta -
拷贝由旧到新,如果产生冲突,按当前应进行拷贝的记录 add 和 commit 即可,执行
git cherry-pick --continue继续拷贝。 -
最后得到一个与 master 不同源的独立分支,包括生成 beta 后的所有历史记录。
git cherry-pick
用于将其他分支已有变更应用于当前分支,就是拷贝记录。
# 拷贝某一记录
git cherry-pick <commitHash>
# 拷贝某一分支的最新一条记录
git cherry-pick <branchName>
# 拷贝两条记录
git cherry-pick <HashA> <HashB>
# 拷贝一段记录(不含起点)
git cherry-pick <HashA>...<HashB>
# 拷贝一段记录(含起点)
git cherry-pick <HashA>^...<HashB>
详细用法参考阮一峰-git cherry-pick 教程