从一组手动存档构建git存储库


1

我正在处理一个没有适当的内容管理系统而创建的应用程序。相反,源文件已保存到ZIP存档中,并在每次发布新版本时进行备份。

我非常希望将这个项目放到一个git存储库中,以便随时了解这些变化,但是我还远未明白如何做到这一点,因为我只创建了全新的git存储库或者使用现有的那些。

从最新的存档创建存储库并从那里开始工作会很简单,但是如何包含更改历史记录?

Answers:


3

从最新的存档创建存储库并从那里开始工作会很简单,但是如何包含更改历史记录?

相当容易。有两种方法可以解决这个问题,具体取决于代码库从一个ZIP存档到另一个ZIP存档的清洁程度累积UnZIP提交每次提交后清理

累积UnZIP提交:UnZIP,提交,UnZIP另一个,提交另一个,等等...

解决方案是首先基于最旧的存档创建一个git存储库,提交它,然后添加后续/逐步更新的东西,提交它等等。例如,假设您有三个名为/日期的档案,如下所示:

  • archive_20150801.zip
  • archive_20150804.zip
  • archive_20150806.zip

现在我将从unZIPping开始,archive_20150801.zip并基于此创建初始git存储库。然后我会unZIP archive_20150804.zip并拖动/复制 - 或只是unZIP到位 - 这样东西会覆盖旧的archive_20150801.zip等等。同上archive_20150806.zip

每次提交后清理:UnZIP,提交,删除,UnZIP另一个,提交另一个,删除另一个,等等...

但是,如果您想要在每个ZIP存档中将较新文件与较旧文件合并时更加准确,我建议您这样做:

  1. UnZIP存档并提交。
  2. 然后在完成提交之后,手动 - 通过 - git rm删除包含repo的目录中的所有文件。一定不要删除特定的混帐东西一样.git.gitignore和这样的。
  3. 完成后 - 并且存在一个相对空的目录 - 解压缩下一个存档并将其内容放入git存储库目录中。
  4. 现在使用新文件执行git add -A并执行新提交。
  5. 完成后,返回第一步,查看要添加到混音中的下一个ZIP存档。

“提交内容,删除内容,添加新内容,提交新内容”方法的好处是,您最终不会得到可能仅存在于最终存储库中的早期版本代码中的杂散文件。每次提交都是ZIP包含的内容的纯粹反映,而不是累积的文件和目录堆叠在一起。

保持提交日期直接

至于保留一些日期/时间历史的外观,你可以做一些花哨的步法并强制实际的git提交日期符合实际的存档日期,如本Stack Overflow答案中所述。但我个人认为过于复杂且容易发生风险; 我更喜欢让这样的任务尽可能简单。相反,我会设置一个提交消息,清楚地说明每个提交是什么样的:

承诺2015-08-01 ZIP发布档案。

这样,只需浏览提交评论历史记录,您就可以轻松了解将来提交归档文件的来源。

我自己完成了这个我通过这个旧学校管理的旧档案,“复制目录 - 并创建一个非管理的ZIP档案”方法,这很痛苦,但从长远来看它有助于为项目保留一些相似的编码历史记录。


我正准备发一个答案说几乎是一样的。如果您想更进一步,您也可以修改每个提交的提交日期。这个关于stackoverflow的上一个问题很好地涵盖了它: stackoverflow.com/questions/454734 / ...
Gene

@Gene感谢您提供该日期更改提示的链接。我个人觉得做这样的事情至少可以说有点过分。在处理像这样的“历史”档案时,我发现它更容易保持简单并让提交消息传达内容。
杰克古尔德2015年

谢谢。这就是我希望的工作方式。但是如何处理文件的创建,删除和重命名?我是否必须检查自己的变化,或者我应该add -A在此之前做commit什么?
鲍罗丁

@Borodin是的,只需git add -A在提交之前使用。如果你想对这个过程更加干净,你可以手动 - 不要通过git-erase提交/添加之间的所有文件。如果您认为这是一种更好的方法,我已经编辑了我的答案来解释如何处理它。
JakeGould 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.