使用Git管理重新写入

使用Git管理重新写入,git,version-control,Git,Version Control,我有一个项目,我正在用Git管理它的来源。这是一个大项目——相对于我的经验而言——我觉得在它完成后的某个时候我会完全重写。虽然这是一个我在很长时间内都不会遇到的问题,但我很好奇:如何使用Git管理一个完整的重写 是否最好进行一次全新的回购来管理代码?或者把我的厕所支起来,在里面重建?尽管这可能取决于具体情况(例如,将重新编写多少代码,我是否希望能够引用旧文件或代码行),但处理此问题的最佳方法是什么?出于一般性的考虑,让我们回答这两个问题:想象一个完整的重写,但是如果你愿意的话,可以从1.0版本中

我有一个项目,我正在用Git管理它的来源。这是一个大项目——相对于我的经验而言——我觉得在它完成后的某个时候我会完全重写。虽然这是一个我在很长时间内都不会遇到的问题,但我很好奇:如何使用Git管理一个完整的重写

是否最好进行一次全新的回购来管理代码?或者把我的厕所支起来,在里面重建?尽管这可能取决于具体情况(例如,将重新编写多少代码,我是否希望能够引用旧文件或代码行),但处理此问题的最佳方法是什么?出于一般性的考虑,让我们回答这两个问题:想象一个完整的重写,但是如果你愿意的话,可以从1.0版本中吸取教训


我希望这是有道理的。如果你需要更多的澄清,请告诉我。谢谢。

这取决于您计划如何重写。如果你真的把所有东西都扔掉,完全从头开始重写,那么也许开始一个新的Git回购协议是个好主意。但我不建议这样做;在旧的实现中可能嵌入了很多好的知识(测试、文档、针对大多数人一开始都没有想到的奇怪情况的bug修复,等等;正如您所说,从1.0中吸取的经验教训),您希望在新的实现中保留这些知识


因此,我建议在分支机构中工作,或者克隆repo并在克隆中工作。甚至可以尝试将重写作为大规模重构,而不是从头重写。在重写代码的过程中,尽可能多地保持代码正常工作,不要在任何损坏或主要功能被剥离的情况下运行太久。你会惊讶地发现,从旧的代码库开始工作,仅仅进行大规模的重构,小心不要破坏正在工作的东西,比彻底重写更有效。一次彻底的重写通常会让你做一些事情,看起来像是旧版本的90%(使用标准,从90/10的稀薄数据中提取)做得很快,而且更干净/快/新/亮/什么的,但是你会发现最后10%很关键,实际上比你想象的要困难得多,你会意识到,你很久以前在旧系统中修复的bug在新系统中又出现了。

+1我自己说得再好不过了。完全重写几乎永远都不是正确的解决方案。除非你在不了解原始设计、不与作者联系的情况下走向一场彻底的灾难,否则慢慢重写问题部分是正确的做法。良好的信息,特别是“克隆repo并在克隆中工作”建议。我在我的一个项目上做过,效果很好。问得好。变更的预期规模将影响您的管理战略,这一事实常常被忽视。