如何使用Git从原有分支拆分部分代码创建新分支
Git 从现有分支拆分部分代码为新分支的方法
在同一分支上有多个功能需要分批上线时,可根据需求选择以下两种常见拆分方式:
一、按指定提交记录拆分
适用于要拆分的功能对应完整提交历史的场景:
- 切换到原有开发分支,确保代码为最新状态:
git checkout dev git pull - 查看提交历史,定位需要拆分的提交哈希值(比如
commit-A、commit-B,这两个提交属于要单独上线的功能):git log --oneline - 基于目标上线的基础分支(比如稳定分支
prod)创建新分支:git checkout prod git checkout -b feature-batch-1 - 将需要的提交逐个 Cherry-pick 到新分支:
git cherry-pick commit-A commit-B- 若遇到冲突,手动解决冲突后执行
git cherry-pick --continue;若需跳过当前提交,执行git cherry-pick --skip
- 若遇到冲突,手动解决冲突后执行
二、按文件/代码块拆分
适用于要拆分的功能仅涉及部分文件或代码片段,无独立提交历史的场景:
- 切换到原有开发分支,创建新分支:
git checkout dev git checkout -b feature-partial - 撤销新分支中不需要上线的代码:
- 撤销整个文件(恢复到稳定分支
prod的状态):git checkout prod -- path/to/unwanted-file.vue - 撤销部分代码块:执行
git reset -p,按提示选择要撤销的代码片段;或用git add -p选择要保留的代码后提交
- 撤销整个文件(恢复到稳定分支
- 提交新分支的修改,仅保留需要上线的代码:
git commit -m "保留需分批上线的功能代码" - 回到原有开发分支,若需移除已拆分的代码,重复上述撤销步骤并提交即可
注意事项
- 操作前建议备份原有分支,避免数据丢失:
git branch dev-backup - Cherry-pick 后若原有分支不再需要这些提交,可在原有分支上执行
git revert commit-A commit-B撤销对应修改
内容的提问来源于stack exchange,提问作者shoanjen
相关产品推荐
相关产品推荐

