Linux 从git中提取时无法识别符号链接

Linux 从git中提取时无法识别符号链接,linux,git,unix,symlink,Linux,Git,Unix,Symlink,我在git中有一个项目,当我第一次从git中删除符号链接时,符号链接就不起作用了。从我所能看到的一切,他们是正确的符号链接。如果我删除这些符号链接并自己重新创建它们,git也会认为它们与它拥有的符号链接相同 Linux或Git中是否存在一种设置,如果符号链接来自Git,该设置会阻止它们工作 用于创建符号链接的命令: ln -s /absolute/path/to/dest symlink-name 一些补充资料 符号链接最初是在MacBook上创建的,但由于git认为我新创建的符号链接(在l

我在git中有一个项目,当我第一次从git中删除符号链接时,符号链接就不起作用了。从我所能看到的一切,他们是正确的符号链接。如果我删除这些符号链接并自己重新创建它们,git也会认为它们与它拥有的符号链接相同

Linux或Git中是否存在一种设置,如果符号链接来自Git,该设置会阻止它们工作

用于创建符号链接的命令:

ln -s /absolute/path/to/dest symlink-name
一些补充资料

  • 符号链接最初是在MacBook上创建的,但由于git认为我新创建的符号链接(在linux上)是相同的,我怀疑这是问题所在
  • 首次获得符号链接时,它们在linux上不起作用,但在其他Mac机器上起作用
  • 在通过删除和重新创建符号链接来修复符号链接之后,git将它们视为相同的,并且在将来的拉取中不会覆盖它们
  • 所有符号链接都指向.phar文件
  • linux机器运行的是Ubuntu 16.04或Centos 7
使用
ls-lah
将符号链接列为常规文件:

-rw-rw-r--.  1 vagrant vagrant   28 Nov 13 09:01 dep
-rw-rw-r--.  1 vagrant vagrant   28 Nov 13 09:01 drupal
-rw-rw-r--.  1 vagrant vagrant   20 Nov 13 09:01 drush
-rw-rw-r--.  1 vagrant vagrant   32 Nov 13 09:01 drush.complete.sh
-rw-rw-r--.  1 vagrant vagrant   29 Nov 13 09:01 drush.launcher
-rw-rw-r--.  1 vagrant vagrant   24 Nov 13 09:01 drush.php
-rw-rw-r--.  1 vagrant vagrant   33 Nov 13 09:01 php-parse
-rw-rw-r--.  1 vagrant vagrant   26 Nov 13 09:01 phpunit
-rw-rw-r--.  1 vagrant vagrant   22 Nov 13 09:01 psysh
然而,如果我手动删除并重新创建
dep
symlink,它将正确显示。Git仍然认为这是相同的,没有做任何更改

lrwxrwxrwx.  1 vagrant vagrant   28 Nov 13 09:33 dep -> ../deployer/deployer/bin/dep
将断开符号链接的权限表
-rw-rw-r--
更改为
lrwxrwx
,也无法修复它们


非常感谢您的帮助。

您的一个配置文件已关闭
core.symlinks
设置。要找出设置位置,请运行:

for location in global system local; do
    git config -l --$location |& grep -q symlinks && echo $location
done
这将输出是否在全局、系统或本地位置设置

在当前存储库中,全局位置通常是
$HOME/.gitconfig
,系统位置通常是
/etc/gitconfig
,本地位置通常是
.git/config


删除该行,Git应该能够正确创建符号链接。

它们“不工作”是什么意思?他们怎么会失败?
ls
显示什么?他们有什么特别的角色吗?@EdwardThomson我已经编辑了这篇文章来包含这些信息,谢谢你的提问,因为我没有想到要提供这些信息。你为什么要写
\absolute\path
?`不是Linux上的路径分隔符。@JohnZwinck只是一个路径占位符,所以我不需要输入实际路径,尽管这在我的文章中被否定了很多,但在示例中错误使用的
\`
将得到修复。(实际符号链接正确地使用了
/
显示原点
似乎不是一个有效的选项(使用git 1.8.3.1)对,这是一个较新的设置。我更新了一些shell,它将枚举配置位置。我在本地配置中有它,似乎SourceTree会在windows计算机上自动将其设置为false,但在mac上该设置从未设置。对-在windows上(并且仅在windows上)它应该设置为
false
。这是一个在创建存储库时实际检测到的设置,并缓存在本地存储库配置中(这样您就不必经常检测文件系统的功能)。由于此(和其他)配置缓存,您无法在两个系统之间共享工作目录。