如果我有一个符号链接的文件或目录并将其提交到 Git 存储库,它会发生什么?
我假设它将它保留为符号链接,直到文件被删除,然后如果您从旧版本中拉回文件,它只会创建一个普通文件。
当我删除它引用的文件时它会做什么?它只是提交悬空链接吗?
来自linux 符号链接手册(假设您在 Linux 中):
符号链接是一种特殊类型的文件,其内容是一个字符串,该字符串是另一个文件的路径名,即链接所指向的文件。(可以使用 readlink(2) 读取符号链接的内容。)
因此,符号链接是一个文件,就像 aREADME.md或 a一样Makefile。Git 只是将链接的内容(即,它链接到的文件系统对象的上述路径)存储在一个“blob”中,就像它存储任何其他文件一样。然后它将名称、模式和类型(包括它是符号链接的事实)存储在表示其包含目录的树对象中。
README.md
Makefile
当您检出包含链接的树时,无论目标文件系统对象是否存在,它都会将该对象恢复为符号链接。
如果您删除符号链接引用的文件,它不会以任何方式影响 Git 控制的符号链接。你会有一个悬空的参考。如果需要,用户可以删除或更改链接以指向有效的内容。