如何正确 git 克隆 Windows 符号链接指向子模块中的文件夹

How to properly git clone with Windows symlinks pointing to folder in submodule

经过反复试验,我注意到使用 mklink /D Foo ..\..\Bar\Baz\Foo 创建的 link(指向同一存储库中的另一个文件)即使在 macOS 上也可以毫无问题地提交和克隆。不幸的是,当这个特定的 link 指向一个子模块时, Windows 在克隆时表现得很奇怪。原因很可能是存储在 repo 中的 links 在克隆子模块之前被拉出。由于 links 在这个特定时间指向任何地方,因此它们已损坏并且即使在克隆子模块后仍将保持损坏状态。

一种解决方法是 del 特定的 link 和 git checkout -- * 将其恢复到工作状态。但是我想避免手动执行此操作,我想知道是否还有其他方法。像强制子模块在 repo 本身之前被拉出来?

However I'd like to refrain from doing this manually

您可以实施一些 kind of post-clone hook, like the one presented in the GitHub project

  • 优点:然后您可以在该挂钩中编写脚本,将 buggy 符号链接的 deletion/recreation。
  • 不方便:这是本地配置,这意味着任何其他人都必须在本地执行相同的操作才能使该过程自动化。