假设我有一个文件fname
,它是到其他存储库/项目中文件的符号链接,例如../../proj2/fname
。
是否可以将fname
添加/提交为常规文件?
似乎,默认情况下,git给出文件模式120000并将链接文件的路径设置为blob内容。
我知道这是因为git ls-tree
显示文件的模式120000,而git cat-file -p
显示../../proj2/fname
作为Blob的内容。
[不,Git知道这是一个符号链接。 Git假装否则将是一种危险,因为它最终将写入回购文件outside。将其作为符号链接进行跟踪正是预期的行为。
如果要显示文件而不显示链接,则可能应使用ln
命令创建硬链接而不是符号链接(ln -s
)。
制作硬链接,您可以使同一文件显示在两个不同的目录下,因此通过任何链接进行更改都会反映两个链接的更改,并且该文件将同时存在于两个目录中,因此将对其进行跟踪通过git
。
我希望Windows的mklink /j
中的Bukov's answer命令可以执行此操作,但我真的不知道。
在Windows中,您可以通过结点来完成所需的操作
例如,程序通常将设置文件保存在系统中的某个位置,但是我想在存储库中对其进行版本控制。我无法移动文件,也不想重复或进行任何操作
但是,如果我们将Windows快捷方式放在存储库目录中,他将把它视为二进制的单个文件;不是指向您要包括的所有实际文件的目录
我们需要的功能是在存储库中放入Windows快捷方式,但该git将仅作为另一个文件夹:cd /location/of/my/repo/
mklink /j "_linkTo_VimSettings" "C:\Program Files (x86)\Vim"