如何让 git 提交符号链接文件夹中的文件

如何让 git 提交符号链接文件夹中的文件

我有两个文件夹:

  • /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 不会遍历符号链接。

它(和我)会假设您正在符号链接到一组您不控制或不想修改的文件,因此它们不需要进行版本控制。

相关内容