【问题标题】:Creating quick snapshots of a repository (git?)创建存储库的快速快照(git?)
【发布时间】:2016-08-04 12:33:14
【问题描述】:

我搜索了很多,但不清楚 git 是否是我想做的正确工具。 当我编写代码时,我想创建整个存储库的快速快照,以便在各个地方测试东西。我忘记了在哪里添加/编辑代码,所以最好将整个存储库“恢复”到初始状态。并且这些快照需要能够永久维护或删除,因为这些只是测试和实验。

VM 快照很慢并且会中断连接。我在考虑 Git 及其分支功能。但据我所知,git 会永久保留所有内容,除非给出一些特殊的危险命令来删除内容。

我想要什么: 提交多个快照,当我将所有内容推送到在线存储库时,能够在它们之间切换并永久删除它们。我不想因为无用的代码而浪费 repo 上的空间,无用的提交会使视图混乱。

这可能是一个菜鸟问题,不幸的是,互联网上的每个指南都讲述了许多命令和概念,而实际用例很少。

非常感谢大家

【问题讨论】:

    标签: git snapshot


    【解决方案1】:

    当我编写代码时,我想创建整个存储库的快速快照,以便在不同地方测试东西。

    是的,git 非常适合。

    并且这些快照需要能够永久维护或删除,因为这些只是测试和实验。

    分行会为您做到这一点。

    据我所知,git 会永久保存所有内容,

    不,那不是真的。它只保留与它们关联的分支或标签的所有提交,以及直接指向它们的所有提交。您无法通过任何分支或标签再访问的其他提交将(一段时间后)通过垃圾收集自动删除。

    我想要什么:提交多个快照,能够在它们之间切换并在我将所有内容推送到在线存储库时永久删除它们。

    是的,git 分支。

    我不想因为无用的代码和无用的提交而在 repo 上浪费空间。

    是的,他们会离开;除非我们在这里讨论的是 Linux 大小的项目,否则空间应该不是问题。

    这可能是一个菜鸟问题,不幸的是,互联网上的每个指南都讲述了许多命令和概念,而实际用例很少。

    http://gitready.com/beginner/2009/02/17/how-git-stores-your-data.html 是一个很好的介绍; https://www.jayway.com/2013/03/03/git-is-a-purely-functional-data-structure/ 有很多细节(在第一个链接之后阅读,可能对你来说有点矫枉过正)。

    【讨论】:

    • 你太棒了。是的,我对分支想了很多,我只是不想像 SVN 那样乱七八糟。所以如果没有关联的标签,提交就会被删除,对吧?我阅读了有关垃圾收集的信息,但不知道它是如何工作的。
    • 它在幕后工作。我知道你的意思,如果你习惯了 SVN,那么对分支的一些担忧是可以理解的;它们在git 中完全不同(干净、简单、轻量)。
    • 后来发现WebStorm有个更好更易管理的特性,叫做“本地历史”,可以接受自定义标签jetbrains.com/help/idea/local-history.html
    【解决方案2】:

    Git 听起来是您用例的绝佳选择。与许多其他版本控制系统 (VCS) 不同,Git 是基于存储库或项目的 VCS。当您在 Git 中执行 commit 时,您实际上是拍摄了整个项目的快照,包括每个文件。这与 Perforce 等其他 VCS 形成鲜明对比,其中每个 文件 都有自己的历史记录。因此,在 Git 中很容易将项目从一种状态转移到另一种状态。

    Git 的另一个好处是它只存储从一个提交到下一个提交的 diff(至少在概念上,实际上它保持树结构)。因此,如果您只将项目中的一个文件从一个提交更改为下一个提交,那么 Git 只会将 更改 记录到您的项目中。这使得 Git 精简而刻薄,没有必要删除任何你认为多余的东西; Git 存储完成工作所需的最少信息。从概念上讲,您可以将 Git 视为在存储库中获取整个项目的一个完整快照,然后仅记录应该发生的更改

    【讨论】:

    • 您对diff 的描述具有误导性——git 在内部不是这样运作的。
    • @AnoE 您的评论具有误导性,因为您听起来 Git 确实在每次提交中存储更改文件的差异,而这正是它所做的。
    • 实现细节...我要说的是,OP 不需要担心 Git 在每次提交时存储每个完整文件。 Git 如何选择实现这一点是另一个话题。
    • 感谢您使用“概念”部分更新您的答案。
    猜你喜欢
    • 2010-10-11
    • 1970-01-01
    • 2011-11-09
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 2019-08-30
    • 1970-01-01
    相关资源
    最近更新 更多