【问题标题】:What happens to files in folder when you switch tags using Git?使用 Git 切换标签时文件夹中的文件会发生什么?
【发布时间】:2013-05-07 15:53:10
【问题描述】:

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

git checkout tag_name

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

我的硬盘上是否有所有文件的版本?当我在标签之间切换时它们会去哪里?刚才添加的文件是不是被隐藏了?

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

【问题讨论】:

    标签: git version-control tags


    【解决方案1】:

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

    更多信息请查看Delta Encoding

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

    【讨论】:

    • 当他们谈论存储时,他们谈论的是您的本地存储库。 Git 是分布式的,因此每个存储库都包含整个历史记录。
    • 你是对的,出于某种原因,我开始考虑 SVN,我删除了最后一行谈论客户端
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-12-17
      • 2019-12-21
      • 2014-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      相关资源
      最近更新 更多