mil*_*uts 2 linux windows git visual-studio
如果我在 Linux 系统和 Windows10 笔记本电脑上运行 Git status,它会返回不同的结果。
原始目录是在 Linux 机器(运行 RedHat 6.4)上启动的。我厌倦了使用 VIM 编辑所有 Python 代码,因此决定将 Windows10 笔记本电脑上的网络驱动器映射到远程 Linux 盒子(控制我们所有的测试设备)和使用 Git 设置的目录。现在我可以使用 Visual Studio Code 轻松查看/编辑/更新远程 Linux 计算机上的任何文件。我从 Linux 机器上运行所有 git 命令,但如果我可以直接从 VS Code 运行它们那就太好了,但这两个版本的 Git 之间显然存在差异。
'git status' --> on the Linux box returns no updated or modified files.
'git status' --> on Windows shows I have over 200 modified files and 2 directories that are deleted.
Run Code Online (Sandbox Code Playgroud)
我已经浏览过这个线程: Git - Windows AND linux line-endings
我尝试过那里有很多很棒的信息。唯一似乎有任何效果的事情是添加“git config core.filemode false”设置,这是我在 Linux 机器上所做的。现在,当我在 Windows 计算机上运行“git status”时,我发现它将我修改的文件从 200 多个减少到 4 个。所以这很棒。但是,我仍然看到这 4 个文件已被修改,并且它认为的 2 个文件夹已被删除。
关于我可以检查的内容还有其他建议吗?
顺便说一句,我有 112 个文件在 VS Code 中显示为 Untracked,但我相信这并非巧合,所有 112 个文件都驻留在 Windows git status 认为已删除的 2 个目录中。
Git 在索引中存储一些特殊的信息,以便轻松了解工作树中的文件是否被修改。索引本身是一个驻留在 Git 存储库中的文件(.git/index;这里可能还有其他辅助文件和临时索引文件,但是.git/index它是索引,可以说是第一个也是真正的索引)。
索引中的这些特殊信息位是(源自)操作系统stat调用的结果。Linux 上的调用stat和statWindows 上的调用提供不同的数据(具体来说st_dev,尽管ino、uid和gid也可能是一个问题),因此单个索引(以及 Git 存储库和工作树)不能在整个系统中正确共享。机器边界。这适用于网络驱动器、VM 映像、Dropbox 文件夹(存在其他问题)或允许任一系统直接查看另一个系统的数据的任何其他共享机制。
所有这一切的最终结果是有时,勉强可以通过这种方式共享 Git 存储库,但这是一个坏主意:您会得到奇怪的效果,例如 Git 丢失了一些修改过的文件,或者认为文件被修改,而实际上它们没有被修改。后者可能就是您所看到的。
\n\n不过,不像这样共享存储库目录(或工作树)确实效果更好。在“更友好”的系统上更是如此,例如使用 VM 和 vagrant 时的 MacOS 与 Linux。有时它确实有效,但只是不可靠。使用单独的克隆,你的生活会更幸福。
\n\n1在编译时,可以选择让 Git忽略该st_dev字段,以启用跨网络驱动器共享。这有时会产生影响,有时则不会。我怀疑大多数Windows版本中都选择了此选项,以便Windows可以与Windows共享,但在Linux版本中未启用,这意味着Linux端不会忽略Windows端\xe2\x80\x94所做的更改,这将导致行为奇怪。
时间戳通常是兼容的,但如果启用纳秒分辨率的时间戳,那也可能会出现问题。
\n| 归档时间: |
|
| 查看次数: |
1255 次 |
| 最近记录: |