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