git 客户端与本地文件系统之间的交互

Interaction between git client and local file system

我是 运行 git bash 我的 Windows 机器上的客户端,我用它来将远程仓库的所有分支克隆到名为 "localRepo" 在我的 Windows 机器上。回购有两个分支("master" 和 "develop"),我从分支 "master".

开始

当我在 Windows 文件资源管理器中打开 "localRepo" 时,我看到了 .git 子目录以及该分支的各种文件和子目录。

当我转到 git 客户端命令行和结帐分支 "develop" 时,git 客户端是否操作 Windows 文件系统以便我随后可以看到当我在 Windows 文件资源管理器中转到 "localRepo" 时分支 "develop" 上的文件?

我假设 git 保持 .git 目录中所有分支的状态。

git 是否创建了在分支更改时切换的符号链接?

是的,在 git checkout develop 之后,GIT 将使用 develop 分支中的文件物理更新您的 localRepo Windows 文件夹。试一试你就知道了。

如果你有两个分支,你的案例在你的本地仓库中是 masterdevelop。 首先你应该知道工作目录是共享的分支。

如果您在 dev 分支中添加了一个 a.txt,并键入内容 a,但您没有将 a.txt 添加到舞台,那么您结帐到 master 分支。您可以看到 a.txt 及其内容,因为 a.txt 与两个分支都没有关系。

如果你将a.txt添加到stage,并在dev分支提交到master,然后你checkout到master,你看不到a.txt,因为a.txt 现在控制了 git,你的猜想是正确的,git 将根据分支更新 repo 目录。如果你想在 master 分支中拥有 a.txt,只需合并 master 中的 dev 分支。

关于你的:

Is git creating symbolic links that it switches when branches are changed?

是的,git注定要trace它,你可以打开.git/HEAD文件,如果在master分支显示:

ref: refs/heads/master

如果你结帐到其他分行,你可以看到显着的变化。