如何用快照创建自己的历史记录的git存储库?

问题描述:

情况

  • 我有一个项目,我一直在使用版本控制系统(VCS)之前一直在努力。
  • 我以前为了保存我的作品的“快照”以便回顾历史,我曾经在复制和粘贴整个项目时取得了进展。
  • 从那时起,我转向使用版本控制系统来处理其他更新的项目,因为使用“复制,粘贴 - 快照”方法已成为空间的大量浪费,并且效用较差。

目标

我想创建一个正确代表发展阶段的储存库。如何用快照创建自己的历史记录的git存储库?

我的计划

  • 创建一个新的存储库,并使用最早的快照文件夹初始化。
  • 通过用下一个更新的快照文件夹替换旧文件夹进行提交,同时保留隐藏的.git文件夹。
  • 重复第2步,直到git更新为最近的快照,即当前工作目录。

问题

  • 这是做到这一点的可行方法?
  • 如果是的话,我可以对这种方法做出什么改进?
  • 如果不是,我该怎么做?

其他信息

我愿意用GitHub的客户端,Git的猛砸,git的外壳,或任何真正为了做到这一点。我对GitHub客户端软件感到非常自在,但我很乐意学习其他方法。

扩展问题

如果我想正确的日期,我应该通过环境变量,改变他们GIT_AUTHOR_DATEGIT_COMMITTER_DATE(我不知道该怎么做),或者是不值得冒这个险?或者文件的元数据(属性)在提交时会保存这些信息?这主要是出于美学原因(据我所能想到的),因为我会按时间顺序提交文件。

编辑:结果

我以前在“我的计划”中列出的步骤,它完美地工作了。

+1

可能会有一些改进,但你脑子里应该工作得很好。 – hobbs

+2

请参阅[如何在将项目导入Git时保留后续版本的日期?](http://stackoverflow.com/questions/28090026/how-can-i-preserve-the-dates-of-the-连续版本,而进口一个项目) – Jubobs

+0

我接受eckes的答案,因为它具体回答我问的,但我想提一下@Jubobs评论涉及到一个非常类似的问题,但事实上不同我的问题是指整个提交,而Jubobs的链接指的是分段,对于其他类似问题的用户可能值得阅读。 – Khillasaurus

恕我直言,你的计划方法是好的。

如果说下一个最近的快照文件夹取代旧的文件夹,你需要照顾,你真的替换:删除回购以外的所有.git文件夹,然后添加一个快照的内容夹。

如果你不这样做,你不会注意到快照之间的删除正确。

我不会玩GIT_AUTHOR_DATEGIT_COMMITTER_DATE,除非你有一定的提交与某个日期的关系(例如,你需要知道你的网站的哪个版本在01/01/2015或者类似的东西上是活的) 。

即使您需要将某个提交连接到某个特定状态,在这种情况下我也会选择标记(例如git tag website_01_01_2015)。

+2

请注意,您可以使用'--author'和'--date'标志和'git commit'来覆盖作者和作者日期。 – Jubobs

+2

此外,您可以从任意树添加快照,'git --work-tree =/path/to/snapshot add .',可能不需要进行任何复制。 – jthill

+1

如果您知道--date/GIT_AUTHOR_DATE的适当日期,请继续使用它们。提交日期不应该改变,因为它意味着反映更改提交到版本控制的时间。 – hobbs