【问题标题】:How to create a git repository with its own history from snapshots?如何从快照创建具有自己历史记录的 git 存储库?
【发布时间】:2015-10-01 18:36:53
【问题描述】:

情况

  • 在使用版本控制系统 (VCS) 之前,我一直在从事一个项目。
  • 我过去常常在取得进展时复制和粘贴整个项目,以便保存我工作的“快照”,以便回顾历史。
  • 从那时起,我开始在我最近的其他项目中使用版本控制系统,因为使用“复制、粘贴 - 快照”方法会浪费大量空间,而且实用性很差。

目标

我想创建一个正确代表开发阶段的存储库。

我的计划

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

问题

  • 这是实现此目的的可行方法吗?
  • 如果是,我可以对这种方法进行哪些改进?
  • 如果没有,我应该怎么做?

附加信息

我愿意使用 GitHub 的客户端、Git Bash、git shell 或任何真正的东西来做到这一点。我对 GitHub 客户端软件最满意,但更乐于学习其他方法。

扩展问题

如果我想要正确的日期,我应该通过环境变量GIT_AUTHOR_DATE 和GIT_COMMITTER_DATE 更改它们(我不知道该怎么做),还是不值得麻烦?或者文件的元数据(属性)会在提交时维护这些信息吗?这主要是出于美学原因(据我所知),因为无论如何我都会按时间顺序提交文件。

编辑:结果

我使用了“我的计划”中列出的步骤,效果很好。

【问题讨论】:

  • 可能会有一些改进,但您的想法应该可以正常工作。
  • 我接受 eckes 的回答,因为它专门回答了我的问题,但我想提一下 @Jubobs 评论与一个非常相似的问题有关,但不同之处在于我的问题指的是整个提交,而 Jubobs 的链接指的是暂存,对于与我有类似问题的其他用户可能值得一读。

标签: git github version-control snapshot revision-history


【解决方案1】:

恕我直言,您计划的方法很好。

当说用下一个更新的快照文件夹替换旧文件夹时,你需要注意你真的是在替换:删除 repo 中除 .git 文件夹之外的所有内容,然后添加下一个快照文件夹的内容。

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

我不会玩 GIT_AUTHOR_DATE 和 GIT_COMMITTER_DATE 除非您有某个提交与某个日期的关系(例如,您需要知道您的网站的哪个版本在 2015 年 1 月 1 日上线或其他什么像那样)。

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

【讨论】:

  • 请注意,您可以将--author 和--date 标志与git commit 一起使用,以覆盖作者和作者日期。
  • 另外,您可以从任意树添加快照,git --work-tree=/path/to/snapshot add .,可能不需要进行任何复制。
  • 如果您知道 --date / GIT_AUTHOR_DATE 的合适日期,请继续使用它们。不应更改提交日期,因为它旨在反映将更改提交给版本控制的时间。
猜你喜欢
  • 2014-01-03
  • 1970-01-01
  • 2023-03-19
  • 2017-03-27
  • 2022-08-07
  • 2011-05-29
  • 1970-01-01
  • 2021-02-19
相关资源
最近更新 更多