5

有没有办法通过放置符号链接将文件推送到 git 存储库外部。

例如,我想推送文件并在 git 存储库中/root/my_file创建了一个符号链接。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
4

2 回答 2

12

符号链接是一个文件,其中包含对文件系统中另一个文件的引用。您可以将符号链接添加到您的存储库,但这样做您只是添加对其他文件的引用,而不是添加对其他文件的引用。

您可以通过创建硬链接而不是符号链接来实现您想要的。硬链接是文件名称与文件系统级别的内容(和元数据)之间的关联。通过创建文件的硬链接并将其添加到您的存储库,您正在添加该链接文件。在兼容 POSIX 的操作系统(如所有 linux)上,您可以像这样创建硬链接:

ln /root/my_file my_hard_link

有关不同类型链接的更多信息,请参阅此问题及其答案。

更新:请注意 git 对硬链接一无所知。将硬链接添加到 git repo 意味着您正在添加该链接文件的内容。Git 不知道您刚刚添加的文件是硬链接。将硬链接添加到 repo 不会破坏它,但将其从 repo 中检出将创建该文件的新副本,并且不会重新创建该硬链接。通过“检查”,我不仅仅指git checkout命令,还包括操作,例如clone获取 repo 的新副本、删除硬链接并使用git reset来重新创建它,或者pull从远程 repo 中获取这个硬链接文件的新版本。

回顾一下-您的两个选择是:

  • 将符号链接添加到 repo - 这将仅添加有关链接的信息,而不是链接文件的内容。
  • 添加到 repo 的硬链接 - 这将添加链接文件的内容。尽管它不会添加有关链接的信息,但它也不会破坏链接,直到您下次从 repo 中检查该硬链接文件时。
于 2016-10-08T17:29:12.313 回答
0

如果您在 Windows 上,您可以尝试使用Git for Windows在 git 存储库中创建符号链接。

从 Windows Vista 开始,支持符号链接。您必须在应用程序设置期间在 Git 上启用 Symbolik 链接(见图)

默认情况下,ln -sGit Bash 中的命令不会创建符号链接。相反,它会创建副本。

要创建符号链接(前提是您的帐户有权这样做),请使用内置的 mklink 命令,如下所示:

mklink /d this-link-points-to c:\that-directory
mklink this-link-points-to c:\that-file

在 Git 上启用 Symbolik 链接

于 2018-04-25T05:37:16.117 回答