有没有办法通过放置符号链接将文件推送到git存储库外部。
我希望例如推送文件/root/my_file
并在git存储库中创建了一个符号链接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
答案 0 :(得分:7)
符号链接是一个文件,其中包含对文件系统中另一个文件的引用。您可以将符号链接添加到您的存储库,但通过这样做,您只添加对其他文件的引用而不是其他文件。
您可以通过创建硬链接而不是符号链接来实现您想要的效果。硬链接是文件系统级别上文件名与其内容(和元数据)之间的关联。通过创建文件的硬链接并将其添加到存储库,您将添加该链接文件。在符合POSIX的操作系统(如所有Linux)上,您可以创建如下的硬链接:
ln /root/my_file my_hard_link
有关不同类型链接的详细信息,请参阅this question及其答案。
更新:请注意,git对硬链接一无所知。添加到git repo的硬链接意味着您要添加该链接文件的内容。 Git不知道你刚刚添加的文件是一个硬链接。添加到repo的硬链接不会破坏它,但是从repo中检查它将创建该文件的新副本,并且不会重新创建该硬链接。通过“检查”我不仅仅指git checkout
命令,还包括clone
一个新的repo副本,删除硬链接并使用git reset
重新创建它,或{{1}来自远程仓库的这个硬链接文件的新版本。
总结一下 - 你的两个选择是:
答案 1 :(得分:0)
如果您使用的是Windows,则可以尝试使用Git for Windows在git存储库中创建符号链接。
从Windows Vista开始,支持符号链接。在应用程序设置期间您必须Enable Symbolik Link on Git(见图片)
默认情况下,Git Bash中的ln -s
命令不会创建符号链接。相反,它会创建副本。
要创建符号链接(假设您的帐户有权这样做),请使用内置的mklink命令,如下所示:
mklink /d this-link-points-to c:\that-directory
mklink this-link-points-to c:\that-file