我可以通过将符号 link 放入 git 存储库来添加文件吗?

Can I add a file by putting the symbolic link in the git repository?

有没有办法通过放置符号 link.

将文件推送到 git 存储库外部

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

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

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

ln /root/my_file my_hard_link

有关不同类型 link 的更多信息,请参阅 this question 及其答案。

更新: 请注意 git 对硬 link 一无所知。添加硬 link 到 git 回购意味着您正在添加那个 linked 文件的内容。 Git 不知道您刚刚添加的文件是硬文件link。添加 hard link 到 repo 不会破坏它,但是从 repo 中检出它会创建该文件的新副本,并且不会重新创建那个 hard link。 "checking it out" 我的意思不仅是 git checkout 命令,还包括 clone 新的 repo 副本、删除硬盘 link 和使用 git reset 等操作重新创建它,或者 pull 从远程仓库 link 编辑这个硬文件的新版本。

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

  • 将符号 link 添加到存储库 - 这将仅添加有关 link 的信息,而不添加 linked 文件的内容。
  • 将硬 link 添加到存储库 - 这将添加 linked 文件的内容。虽然它不会添加有关 link 的信息,但它也不会破坏 link,直到您下次从存储库中检查那个硬 linked 文件。

如果您在 Windows,您可以尝试使用 Git for Windows.

在 git 存储库中创建符号 link

从 Windows Vista 开始,支持符号 links。您必须 Enable Symbolik Link on Git 在应用程序设置期间(见图)

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

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

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