1

我的计算机上有一个带有 git 存储库的文件夹。当我签出最新的代码时,我可以看到所有最新的文件和更改。如果我想返回查看前一个标签,我运行命令

git checkout tag_name

在假设的情况下,我的一些文件可能会被删除,而有些只是恢复到旧版本。

我的硬盘驱动器上的文件的所有版本吗?当我在标签之间切换时它们会去哪里?添加的文件是否只是隐藏?

此外,这可能是一个单独的问题,当其他 VCS 需要更长的时间时,它如何能够如此快速地在标签之间切换?

4

2 回答 2

0

它将工作目录与您的分支名称和项目历史记录中的新更改存储相匹配,因此不会删除任何内容。如果您在分支 A 上工作并切换到 B,而有人对 A 进行了更改,然后您想返回以查看 A 的最新更改,您必须拉取但首先将更改推送到 A。

于 2013-05-07T16:00:27.500 回答
0

Git 使用增量(版本之间的差异)。它不是获取整个新(或旧)版本,而是使用来自不同版本的增量编辑磁盘上的文件。因此,如果您只编辑一百万行文档中的 1 行,则只需从 git 服务器获取该 1 行更改,并将其转换为该文件的本地版本。

有关更多信息,请查看Delta 编码

Git 将文件的每个修订版本存储为唯一的 blob 对象。通过检查树和提交对象可以找到 blob 之间的关系。新添加的对象使用 zlib 压缩完整存储。这会很快消耗大量磁盘空间,因此可以将对象组合成包,这些包使用增量压缩来节省空间,将 blob 存储为它们相对于其他 blob 的更改。资源

于 2013-05-07T16:02:00.310 回答