使用Git切换标签时文件夹中的文件会发生什么变化?

时间:2013-05-07 15:53:11

标签: git version-control tags

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

git checkout tag_name

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

我硬盘上的所有文件版本都是?当我在标签之间切换时,他们去哪儿了?添加的文件只是隐藏了吗?

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

有关详细信息,请查看Delta Encoding

  

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