如何将新代码提交给Git并忘记旧代码?

时间:2017-01-12 21:11:31

标签: git github

基本上GitHub上有一个包含正在使用的代码的repo。我们实际上是从头开始,并用一个全新的结构重建了这个特定的项目,因为它是“由那些在此之前工作的白痴完成的,无法用双手找到他们的屁股”之类的东西。你去过那里,对吧?

无论如何,在重建之后我真的想要使用相同的repo,因为项目名称应该是它应该是,但我想从一个全新的代码库开始,同时保留旧的历史记录。那可能吗?有点像2.0版。我以前从来没有这样做过,所以我不知道。我猜也许我必须为它创建一个新的回购或重命名原始并重新开始,但我想我会问。我在网上找不到任何关于它的东西所以我在这里问你。

更新:我最终做的事情就像凯西在评论中所说的那样 - 我会给你答案,但我不能发表评论。我重命名了原始仓库并为新代码创建了一个新仓库。很简单。

2 个答案:

答案 0 :(得分:4)

  

无论如何,在重建之后我真的想要使用相同的仓库,因为项目名称应该是它应该是,但我想从一个全新的代码库开始,同时保留旧的历史记录。这可能吗?

您可以使用普通git commitgit addgit rm正常提交更改。 Git并不关心你改变了多少代码。

您可能希望将v2开发作为自己的分支,直到它准备就绪。重写通常需要非常非常长的时间,很少直接开箱即用。当您正在使用版本2时,您将希望保持打开继续开发和发布版本1的选项。然后当v2准备就绪时,将其合并到主分支。

v2分支中的第一次提交可能只是删除了所有内容,但重写很少将所有内容都删除,因此您可能希望采用更细微的方法来改变事物的碎片并从中获取重要且难以获胜的细节和业务逻辑码。如果你想保持兼容性,你会希望将旧测试作为回归测试。如果存在诸如用户帐户或帐单信息之类的持久性数据,则您必须将该数据移植到新应用程序中,因此使用旧代码和数据模式进行参考将非常有用。 / p>

如果它们彼此不兼容,您甚至可能最终并行释放,因为版本1用户不想重写所有内容以使用版本2.事实上,如果版本1和2不兼容,你真的在​​制作一个与原创概念和名称相关的全新项目(可能还有一些相同的人)。对于您的用户来说,启动一个名为" WhateverYourProjectIsCalled2"的新项目可能会更有礼貌。这样使用版本1的任何东西都可以继续使用WhateverYourProjectIsCalled,而新用户或想要切换的现有用户可以使用WhateverYourProjectIsCalled2。

由于许多同一个人都在同时处理这两个项目,因此您可以使用Github组织拥有这两个项目并管理集体权限,而无需重复所有这些。

有很多不同处理方式的例子。虽然Perl 5是Perl 4的80%重写,但它只有轻微的不兼容性并保留了相同的代码库和社区。相比之下,Perl 6是一个完整且不兼容的Perl重写,在各个方面完全脱离了Perl 5:新代码,新存储库,新社区,甚至是新的许可证。

另一方面,Python 3引入了一些与Python 2无法兼容但仍然是#34; Python"。这在Python社区引起了一些混乱,因为大量现有的Python 2代码不能在Python 3上运行,反之亦然;它们是互不相容的。现在Python 2 and Python 3 are developed and released in parallel和Python库必须选择支持哪一个或两个。全部" Python"尽管不再能够共同运行代码。

您选择哪条路线取决于您正在开发的内容。如果它是一个用户应用程序,您可以安全地将其保存在原始存储库中,用户将适应新版本,但您仍然希望继续使用旧测试(至少{{3} })确保它仍然有效并且您不会重新引入旧错误。

如果它是一个编程库,或者有任何程序化依赖的东西,如插件API或Web API,您应该将其拆分为一个新项目,以避免对用户造成大规模和突然的不兼容。 / p>

关于Git的好处是,如果你选择一种策略,你可以稍后改变主意。分支可以拆分为自己的存储库(包含历史记录),或者单独的存储库可以成为分支。我建议从分支开始,直到你确定这个重写是在某个地方。

最后,重写通常会失败。由于我赢得了很多原因,他们的风险极高。这通常是一个原因"那些在此之前工作的白痴无法用双手找到他们的屁股"他们做了什么。有时这是一个不好的理由。有时它是一个很好的理由。有时这是一个很好的理由,但现在已经不存在了。希望重写旧系统的开发人员经常会发现他们没有考虑到很多细微的细节。

相反,请在步骤中考虑blackbox tests旧代码。它的风险要低得多,它保留了那些白痴"关于业务逻辑和错误修复的细节,它强迫您检查和理解旧系统详细执行的所有操作,并且当您进行小的(更)控制的更改时,一切都会继续工作。

答案 1 :(得分:0)

如果您在旧版本的顶部提交新代码,您将拥有历史记录中的旧版本/代码以及所有时间的所有更改。作为安全措施,为什么不将当前(遗留)代码复制/克隆到另一个存储库或至少一个“历史”分支,以便您可以在需要时访问它。 您可以随时在代码库上运行“git log”作为额外的措施,以查看您/其他人更改内容的时间和时间。 https://githowto.com/history