我有两个文件夹:
/home/me/code/project/
/srv/www/projectfiles/
在该/home/me/code/project
文件夹中,我已将其符号链接static
到/srv/www/projectfiles/
即/home/me/code/project/static/
->/srv/www/projectfiles/
当我尝试现在提交时,它看不到符号链接后面的任何文件,而是尝试将符号链接本身作为文件提交。
我如何提交/srv/www/projectfiles/style.css
符号链接后面的文件(例如)?
答案1
一个解决方法是将 /srv/www/projectfiles 作为 /home/me/code/project/static 的符号链接,这样 git 就看不到符号链接
答案2
如果你使用的是 Linux,我特别喜欢吉特BLSR。它是一个通过 LD_PRELOAD 加载的库,可以透明地取消引用存储库外部的文件和文件夹的符号链接。
为本地用户帐户安装它很简单:
git clone https://github.com/Alcaro/GitBSLR.git
cd GitBSLR
./install.sh
这将编译该库并创建如下所示的别名~/.bashrc
:
alias git="LD_PRELOAD=/path/to/gitbslr.so git"
使用此别名可以实现透明链接取消引用。
答案3
考虑使用挂载点来挂载目标文件夹(您当前符号链接到的文件夹),使其出现在 git 项目下您想要的位置。我已成功使用这种方法。
例子:
#!/bin/sh
sudo mount --bind ./src_folder ./dst_folder
答案4
将文件移入文件夹并删除符号链接。Git 不会遍历符号链接。
它(和我)会假设您正在符号链接到一组您不控制或不想修改的文件,因此它们不需要进行版本控制。