![从一组手动档案构建一个 git 存储库](https://linux22.com/image/1462743/%E4%BB%8E%E4%B8%80%E7%BB%84%E6%89%8B%E5%8A%A8%E6%A1%A3%E6%A1%88%E6%9E%84%E5%BB%BA%E4%B8%80%E4%B8%AA%20git%20%E5%AD%98%E5%82%A8%E5%BA%93.png)
我正在处理一个没有使用适当内容管理系统创建的应用程序。相反,源文件被保存到 ZIP 存档中,每次发布新版本时都会备份。
我非常希望将这个项目放入 git 存储库,以便正确了解其随时间的变化,但我不清楚如何做到这一点,因为我只创建过全新的 git 存储库或使用过现有的存储库。
从最新的档案中创建一个存储库并从那里开始工作很简单,但我该如何包含更改的历史记录呢?
答案1
从最新的档案中创建一个存储库并从那里开始工作很简单,但我该如何包含更改的历史记录呢?
非常简单。有两种方法可以解决这个问题,具体取决于从一个 ZIP 存档到另一个 ZIP 存档的代码库的干净程度:累计 UnZIP 提交或者每次提交后进行清理。
累积的 UnZIP 提交:UnZIP、提交、UnZIP 另一个、提交另一个,等等…
解决方案是首先根据最旧的档案创建一个 git 存储库,提交它,然后添加后续/逐渐更新的内容,提交它,依此类推。例如,假设您有三个档案,其名称/日期如下:
archive_20150801.zip
archive_20150804.zip
archive_20150806.zip
现在我将开始解压archive_20150801.zip
并在此基础上创建初始 git 存储库。然后我将解压archive_20150804.zip
并拖动/复制(或只是就地解压),这样这些内容将覆盖旧内容archive_20150801.zip
,依此类推。同上archive_20150806.zip
。
每次提交后清理:解压、提交、删除、解压另一个、提交另一个、删除另一个等等……
但是如果你想要在每个 ZIP 存档中将新文件与旧文件合并得更加准确,我建议你这样做:
- 解压档案并提交。
- 然后在提交完成后手动-不是通过
git rm
— 从包含 repo 的目录中删除所有文件。请确保不要删除 git 特定的内容.git
,例如.gitignore
等。 - 完成后(并有一个相对空的目录),解压下一个存档并将其内容放入 git 存储库目录中。
- 现在,使用新的文件执行
git add -A
并进行新的提交。 - 完成后,返回第一步,获取您想要添加到混合中的下一个 ZIP 存档。
“提交内容,删除内容,添加新内容,提交新内容”方法的好处是,您不会在最终存储库中留下仅存在于早期版本代码中的杂散文件。每次提交都纯粹反映了 ZIP 所包含的内容,而不是一堆相互扩展的文件和目录。
确保提交日期准确
至于保留日期/时间历史的某些相似之处,你可以做一些花哨的操作,强制实际的 git 提交日期与实际的存档日期相一致正如 Stack Overflow 答案中所述。但我个人认为这过于复杂且容易产生风险;我更愿意让这类任务尽可能简单。相反,我会设置一个提交消息,清楚地说明每个提交是什么样的:
提交 2015-08-01 ZIP 发布档案。
这样,您只需浏览提交注释历史记录,将来就可以轻松知道存档提交的来源。
我自己曾经通过这种老式的“复制目录并创建非托管 ZIP 档案”方法管理过旧档案,这很麻烦,但从长远来看,它有助于保留项目编码历史的一些相似之处。