有没有办法通过放置符号链接(symbolic link)将文件推送到 git 存储库。
例如,我想推送文件 /root/my_file
并在 git 存储库中创建了一个符号链接(symbolic link) my_symbolic_link
。
# ls -lA
drwxr-xr-x 7 root root 4096 Oct 8 07:55 .git/
lrwxrwxrwx 1 root root 26 Oct 8 7:58 my_symbolic_link -> /root/my_file
最佳答案
符号链接(symbolic link)是一个文件,其中包含对文件系统中另一个文件的引用。您可以将符号链接(symbolic link)添加到您的存储库,但这样做只会添加对其他文件的引用,而不是其他文件。
您可以通过创建硬链接(hard link)而不是符号链接(symbolic link)来实现您想要的。硬链接(hard link)是文件名称与其内容(和元数据)在文件系统级别上的关联。通过创建文件的硬链接(hard link)并将其添加到您的存储库,您将添加该链接文件。在 POSIX 兼容的操作系统(如所有 linux)上,您可以像这样创建硬链接(hard link):
ln /root/my_file my_hard_link
有关不同类型链接的更多信息,请参阅 this question及其答案。
更新:请注意,git 对硬链接(hard link)一无所知。添加到 git repo 的硬链接(hard link)意味着您正在添加该链接文件的内容。 Git 不知道您刚刚添加的文件是硬链接(hard link)。向 repo 添加硬链接(hard link)不会破坏它,但是从 repo 中 check out 它会创建该文件的新副本,并且不会重新创建该硬链接(hard link)。我所说的“ checkout ”不仅仅指 git checkout
命令,还包括 clone
新的 repo 副本、删除硬链接(hard link)和使用 等操作>git reset
重新创建它,或者从远程仓库 pull
这个硬链接(hard link)文件的新版本。
回顾一下 - 您的两个选择是:
- 向存储库添加符号链接(symbolic link) - 这将仅添加有关链接的信息,而不添加链接文件的内容。
- 将硬链接(hard link)添加到存储库 - 这将添加链接文件的内容。虽然它不会添加有关链接的信息,但在您下次从存储库中检查该硬链接(hard link)文件之前,它也不会断开链接。
关于git - 我可以通过将符号链接(symbolic link)放入 git 存储库来添加文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39935249/