创建存储库的快照(git?)

时间:2016-08-04 12:33:14

标签: git snapshot

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

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

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

这可能是一个菜鸟问题,不幸的是,互联网上的每个指南都会提供很多命令和概念,几乎没有真正的用例。

非常感谢大家

2 个答案:

答案 0 :(得分:3)

  

当我编写代码时,我想创建整个存储库的快照,以便在各个地方测试内容。

是的,git非常适合。

  

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

分支机构将为您做到这一点。

  

据我所知,git永远保留所有东西,

不,那不是真的。它只保留所有具有与之关联的分支或标记的提交,以及直接导致它们的所有提交。其他提交,你不能再通过任何分支或标签到达(将在一段时间后)通过垃圾收集自动删除。

  

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

是的,git branches。

  

我不想因为无用的代码浪费在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/有很多细节(在第一个链接后阅读,可能对您来说太过分了)。

答案 1 :(得分:1)

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

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