如何在符号链接的文件夹中制作git commit文件


19

我有两个文件夹:

  • /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符号链接后面的文件(例如)?

Answers:


12

一种解决方法是使/ srv / www / projectfiles为/ home / me / code / project / static的符号链接,因此git看不到任何符号链接


所以您基本上在颠倒逻辑?将所需的文件/文件夹保存在Git文件夹中,然后将符号链接放在其他位置(原始文件/文件夹曾经用于的位置)?
RusI

@Rusl完全是这样
user151019 '19

但是,如何对文件进行本地自定义?我应该为每台机器设置单独的仓库吗?失去了全部。
Ashnur

好吧,本地定制将不在git中
user151019 '19

3

如果您使用的是Linux,那么我特别喜欢GitBLSR提供的解决方案。它是一个通过LD_PRELOAD加载的库,该库透明地取消引用到资源库外部文件和文件夹的符号链接。

为本地用户帐户安装它很简单:

git clone https://github.com/Alcaro/GitBSLR.git
cd GitBSLR
./install.sh

这将编译该库并创建一个别名,如下所示~/.bashrc

alias git="LD_PRELOAD=/path/to/gitbslr.so git"

使用此别名可启用透明链接取消引用。


1
这太可怕了!但是效果很好,所以很棒。谢谢!
凯在

那真是怪了!我很喜欢
Marcos BesteiroLópez,

2

考虑使用挂载点挂载目标文件夹(您现在将其符号链接到)以显示在git项目下所需的位置。我已经成功使用了这种方法。


1

将文件移到文件夹中并删除符号链接。Git不会遍历符号链接。

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


1
我确实控制了这些文件。它们是样式表等,需要位于服务器将要服务的目录中。
Macha 2010年

1

另一个解决方法-我发现唯一也适用于目录的解决方法-更改git工作树以执行特定操作。

git --work-tree=/home/me/code/project/ add /home/me/code/project/static/
git --work-tree=/home/me/code/project/ commit /home/me/code/project/static/
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.