【问题标题】:Git Snapshots, how they work?Git 快照,它们是如何工作的?
【发布时间】:2013-09-30 10:41:33
【问题描述】:
谁能解释一下 git 中快照的概念。我确实了解哪些数据可以存储为一系列变更集,但这与 git 中的快照有何不同。为什么这样更好?
基本的 Git 工作流程是这样的:(取自 git 文档)
- 您修改了工作目录中的文件。
- 您暂存文件,将它们的快照添加到暂存区域。
- 您进行了一次提交,这会将文件原样保存在暂存区域中,并将该快照永久存储到您的 Git 目录中。
【问题讨论】:
标签:
git
version-control
git-commit
【解决方案1】:
git commit objects 本质上是您所说的快照。
git 中的每个提交都代表了整个树的快照(或状态),就像它在那个时刻一样。另一个提交创建另一个快照,依此类推。
您始终可以通过签出提交来回退整个树的状态:git checkout commit_id - 这几乎就像时间机器。
当您git add 文件时,您并没有真正制作快照,您只需将这些文件放入索引中以成为下一次提交的一部分,这样当您实际提交时,提交对象将仅引用那些为 @987654324 的文件@-ed(实际上,这些文件是在树的帮助下组织的 blob)。
【解决方案2】:
我认为文档很糟糕。
你熟悉工作树,就是你看到的文件,暂存区或索引就像草稿,最终提交就是快照。