我想使用硬链接来避免必须在其基本文件夹和用于个人开发的小型 git repo 之间同步/复制一些源文件。
C:\PathLink>mklink /h test C:\PathTarget\file.f90
Permanent link created for test <<===>> C:\PathTarget\file.f90
C:\PathLink>..\FindLinks\FindLinks.exe test
FindLinks v1.0 - Locate file hard links
Copyright (C) 2011 Mark Russinovich
Sysinternals - www.sysinternals.com
C:\PathLink\test
Index: 0x0003F29B
Links: 1
Linking file:
C:\PathTarget\file.f90
那里一切看起来都很好,但是当我使用“目标”访问路径修改并保存文件时(我只是fgh
在 Visual Studio 中将附加内容添加到一行),我发现链接“丢失”了:
C:\PathLink>..\FindLinks\FindLinks.exe test
FindLinks v1.0 - Locate file hard links
Copyright (C) 2011 Mark Russinovich
Sysinternals - www.sysinternals.com
C:\PathLink\test
Index: 0x0003F29B
Links: 0
之后,我可以分别加载这两个文件(test
和),反映修改,并且是未保存的文件。file
file
test
有人知道为什么会发生这种情况吗? 有没有办法避免这种情况?
我猜测我可以在 PathTarget 文件夹中初始化我的 repo,然后创建一个适配的.gitignore
。Target 文件夹中已经有很多文件,我只想修改其中的几个。此外,我还想添加新的源文件,如果我有自己的文件夹,与 Target 文件夹分开,我会发现它不那么混乱。硬链接看起来对我来说是最好的,我不明白为什么它在这里失败了。
答案1
显然,您用来修改文件的程序实际上会删除它(破坏硬链接),然后重新创建它,并将原始数据保留在您硬链接到它的文件中。
如果您希望即使目标被删除,文件仍继续指向不同的路径/文件名,则可以使用符号链接。只需mklink
在管理命令提示符中使用,无需使用/h
开关。