我可以通过将符号 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
有没有办法通过放置符号 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