有人可以解释一下git中快照的概念吗?我确实了解哪些数据可以存储为一系列变更集,但这与 git 中的快照有何不同。为什么这样更好?
基本的 Git 工作流程是这样的:(取自 git 文档)
- 您修改工作目录中的文件。
- 您暂存文件,将它们的快照添加到暂存区域。
- 你做一个提交,它把文件放在暂存区域,并将快照永久存储到你的 Git 目录中。
有人可以解释一下git中快照的概念吗?我确实了解哪些数据可以存储为一系列变更集,但这与 git 中的快照有何不同。为什么这样更好?
基本的 Git 工作流程是这样的:(取自 git 文档)
我认为文档非常糟糕。
您熟悉工作树,它只是您看到的文件,暂存区或索引就像草稿,最终提交是快照。
git commit 对象本质上是您正在谈论的快照。
git 中的每个提交都代表了整个树在那个时刻的快照(或状态)。另一个提交创建另一个快照,依此类推。
您总是可以通过签出提交来回退整个树的状态:git checkout commit_id
- 它几乎就像时间机器。
当您git add
提交文件时,您并没有真正制作快照,您只需将这些文件放入索引中以成为下一次提交的一部分,这样当您实际提交时,提交对象将简单地引用那些被git add
-ed 的文件(实际上,这些文件是在树的帮助下组织的 blob)。