如何将本地分支中未推送的提交迁移至另一全新克隆的分支?
可行,以下是两种常用实现方法
方法一:使用git cherry-pick迁移提交
- 在原本地仓库中,执行
git log --oneline,记录下所有未推送提交的哈希值(比如要迁移从提交abc123到def456的一系列提交)。 - 切换到新克隆的仓库,创建并切换到目标分支(如果已有目标分支直接切换即可):
git checkout -b target-branch - 执行迁移命令:
- 迁移单个提交:
git cherry-pick <提交哈希> - 迁移连续的多个提交:
git cherry-pick <起始提交哈希>..<结束提交哈希>
- 迁移单个提交:
- 若遇到冲突,手动解决文件冲突后,执行
git cherry-pick --continue继续迁移;若要放弃迁移,执行git cherry-pick --abort
方法二:使用补丁文件迁移
- 在原本地仓库中,生成未推送提交的补丁文件:
git format-patch <远程跟踪分支名>..<本地分支名>,执行后会生成每个提交对应的.patch文件。 - 将所有
.patch文件复制到新克隆的仓库目录下。 - 切换到新仓库的目标分支,执行
git am *.patch批量应用补丁。 - 若遇到冲突,解决冲突后执行
git am --continue;放弃则执行git am --abort
注意事项
- 确保新仓库的目标分支基础与原提交的基础分支版本一致,能减少冲突概率。
- 若提交数量较多,使用补丁文件的方式会更便于批量迁移。
内容的提问来源于stack exchange,提问作者j3d
相关产品推荐
相关产品推荐

