如何保留项目重构进度,同时基于旧Commit复制到新文件夹开发功能?
解决方案步骤
1. 保存当前未完成的重构进度
不管你当前有没有提交重构的修改,先把进度稳妥保存:
- 如果有未提交的修改,直接创建分支并提交所有改动:
git checkout -b refactor-wip git add . git commit -m "WIP: 未完成的大规模重构" - 如果已经提交过部分重构,直接切换到对应分支即可,确保所有重构改动都在这个分支里。
2. 检出可运行的旧版本并复制到新目录
- 先找到最后能正常运行的历史commit哈希:
在输出里定位到目标commit(比如哈希为git log --onelineabc123)。 - 切回主分支(假设为
main),再检出到目标commit:git checkout main git checkout abc123 - 此时工作区是可运行的旧版本,把整个项目文件夹复制到新目录(比如
../project-new-feature),用于开发老板要求的功能。 - 立刻切回重构分支继续工作:
git checkout refactor-wip
3. 新功能开发完成后的合并建议
新功能开发完毕后,按以下方式整合更清晰:
- 在新目录里初始化git,将旧版本作为初始提交,然后提交所有新功能改动,方便后续追踪。
- 回到原项目,从目标旧commit切出专门的功能分支:
git checkout -b new-feature abc123 - 把新目录里的改动复制过来,提交到
new-feature分支,之后可合并到主分支;等重构完成后,再将refactor-wip分支合并到主分支(合并时需提前对比代码,处理冲突)。
注意事项
- 检出旧commit后,务必先测试代码是否能正常运行,再复制目录。
- 不要在检出的旧commit上直接开发,避免打乱原项目的历史记录,复制到新目录是最安全的隔离方式。
- 比起用
git stash暂存修改,用分支保存重构进度更持久,不会出现暂存内容丢失的情况。
内容的提问来源于stack exchange,提问作者Islam Y-
相关产品推荐
相关产品推荐

