当在 git 中更改分支时,如何替换文件?

当在 git 中更改分支时,如何替换文件?

我不明白 git 在更改分支时如何管理文件:

当我跑步时

git branch xxx

现有的物理文件会发生什么?它们被移动了吗?被删除了吗?存储在数据库中了吗?git 是否涉及文件系统魔法?

答案1

当你运行时git branch xxx,Git 仅创建新分支,但实际上并没有切换到它——工作树根本没有被修改。(请注意,新分支将具有与旧分支完全相同的文件和历史记录。)

当你运行git checkout xxx切换分支时,新分支的文件将从“对象数据库”,这是保存在下的存档.git/objects/,其中包含每次提交中每个文件的压缩原件。(这也是提交本身的存储位置。)

属于旧分支但在新分支中缺少的文件会被直接删除(因为它们已经存在于对象存储中,所以如果您切换回来,Git 只需重新提取它们即可)。

当分支之间的某些文件相同时,git checkout根本不会触碰它们(不删除/重新提取)。这样,您未提交的更改可以在签出后保留。

相关内容