Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当您使用Git切换标记时,文件夹中的文件会发生什么变化?_Git_Version Control_Tags - Fatal编程技术网

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

当您使用Git切换标记时,文件夹中的文件会发生什么变化?,git,version-control,tags,Git,Version Control,Tags,我的计算机上有一个带有git存储库的文件夹。当我签出最新的代码时,我能够看到所有最新的文件和更改。如果我想返回并查看上一个标记,我将运行命令 git checkout tag_name 在一个假设的情况下,我的一些文件可能会被删除,而一些文件只是恢复到旧版本 所有版本的文件都在我的硬盘上吗?当我在标签之间切换时,它们会去哪里?添加的文件是隐藏的吗 此外,这可能是一个单独的问题,当其他VCS花费的时间明显更长时,它如何能够在标签之间如此快速地切换?它将工作目录与您的分支名称和项目历史记录中的新更

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

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

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


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

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

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

有关更多信息,请参阅

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


当他们谈论存储时,他们谈论的是您的本地存储库。Git是分布式的,所以每个存储库都包含整个历史。你是对的,出于某种原因,我开始考虑SVN,我删除了最后一行关于客户端的内容