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

Creating quick snapshots of a repository (git?)

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

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

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

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

非常感谢大家

Git 听起来是您用例的绝佳选择。与许多其他版本控制系统 (VCS) 不同,Git 是基于存储库或项目的 VCS。当您在 Git 中执行 commit 时,您实质上是对整个项目(包括每个文件)进行了快照。这与 Perforce 等其他 VCS 形成对比,其中每个 file 都有自己的历史记录。因此,在 Git.

中很容易将项目从一个状态移动到下一个状态

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

When I write code I would like to create quick snapshots of the entire repository for testing stuff in various places.

是的,git 非常适合。

And these snapshots need to be able to be maintained or deleted permanently, as these are just tests and experiments.

分支机构会为您做这件事。

as far as I can see git keeps everything forever,

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

What I would like: Commit multiple snapshots, be able to switch between them and permanently delete them when I push everything to the online repository.

是的,git 个分支。

I don't want to waste space on the repo because of useless code, with useless commits that clutter the view.

是的,他们会离开;除非我们在这里谈论 Linux 规模的项目,否则 space 应该没有任何问题。

This might be a noob question, unfortunately every guide on the internet tells lots of commands and concepts with few real use cases.

http://gitready.com/beginner/2009/02/17/how-git-stores-your-data.html is an excellent introduction; https://www.jayway.com/2013/03/03/git-is-a-purely-functional-data-structure/ 有很多细节(在第一个 link 之后阅读,可能对你来说太过分了)。