windows - 在 Windows 上安全地使用 junction 或 mklink/j 与 git 存储库

标签 windows git junction

在 Windows 上使用 Git,我试图处理我的 git 存储库外部的内容。例如,我们有艺术作品和内容文件,这些文件正在由非 git 用户在谷歌驱动器中更新,因此为了捕获这些更改,我设置了类似于以下内容的内容;

d:\MyRepo
  \.git
  \code1
  \images1
  \fonts (junction) => c:\users\%username%\google drive\designerLtd\fonts
  \etc

其中“字体”是一个文件夹,已使用 junction.exemklink/j(相同的东西)链接。这通常效果很好,因为 Git status 会立即突出显示新的更改(无论是有意还是无意),并为 checkin 或撤消做好准备。

问题:有时切换分支时,如果这些文件夹中的内容在分支之间不同,Git 会修剪链接目录并重新创建它们。实际上它断开了链接。现在 Git 总是正确的并且构建是一致的,但它不再跟踪那些外部资源并不总是很明显。

更糟糕的是,它可以删除外部位置的文件。它们当然可以从 git 中恢复,但它非常笨重。

切换分支时交换外部位置的内容不是问题,因为只有一台 PC 以这种方式连接并且它们很容易 merge ,但我只是希望它不会破坏链接。

问题:是否有更好的方法允许在 Windows 上的 Git 存储库中使用外部连接点?

需要明确的是,据我所知,GIT 存储库中(还)没有符号链接(symbolic link),这不是关于 Unix 和 Windows git 客户端之间互操作性的问题(SO 上的大多数其他问题似乎都相关)到)。

最佳答案

您可以修改连接点的权限,使 git 无法再删除它。 Git 通常不关心删除目录是否失败(除非它需要用文件替换目录)。

参见 https://support.microsoft.com/en-us/kb/205524 中的“使用建议”

关于windows - 在 Windows 上安全地使用 junction 或 mklink/j 与 git 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28882917/

相关文章:

java - 如何在 Java 中检查 Windows 版本?

windows - 运行特定版本的 Visual Studio(并排安装两个版本的 Visual Studio)

git - git 子模块可以有自定义根吗?

git - 如何在 Azure DevOps 中设置分支名称的默认模板

range - Perl6 中 "one"结点的逻辑问题

windows - 在 SVN 中手动合并期间删除文件

c# - 如何在 Windows 资源管理器工具栏中创建自定义按钮

Git 错误 : src refspec master does not match any error: failed to push some refs

entity-framework - EF 6、代码第一联结表名称

winapi - NTFS Junctions,难以理解 API