【问题标题】:GIT_DISCOVERY_ACROSS_FILESYSTEM problem when working with terminal and MacFusion使用终端和 MacFusion 时出现 GIT_DISCOVERY_ACROSS_FILESYSTEM 问题
【发布时间】:2011-08-19 01:25:27
【问题描述】:

我正在使用 MacFusion 和 OSXFuse(类似于 MacFuse)通过 SSH 将我的服务器安装到我的办公室机器上。当我 cd 进入服务器上的 rails 工作目录时,我在 zsh 提示符中看不到任何 git 信息。如果我尝试 git pull origin,我会收到以下错误消息:

fatal: Not a git repository (or any parent up to mount parent /Volumes)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)

我知道我可以通过 ssh 连接到服务器,但是我不会丢失 zsh 自动更正和历史记录吗?难道我也需要设置textmate和其他软件才能使用ssh吗?我不需要远程桌面来安装 DMG 等等吗?所有这些似乎都有些麻烦。

有没有更好的方法来做我想做的事?否则有没有办法启用 GIT_DISCOVERY_ACROSS_FILESYSTEM?

PS - MacFusion 也可以通过 FTP 挂载服务器 - 这会比 SSH 更可取吗?

【问题讨论】:

  • 我刚刚收到同样的错误消息,因为我输入了git checkout /my/repo.git repo 而不是git clone /my/repo.git repo。该死的旧 SVN 习惯!

标签: git ssh sshfs macfuse


【解决方案1】:

直到我意识到我没有在安装的 vagrant 机器上初始化该文件夹中的 Git 存储库之前,我收到了这个错误。

所以我输入了git init 然后 git 工作了。

【讨论】:

  • 这也是我的情况。谢谢,来自这个 git 新手。
  • ? 谢谢,这看起来很简单!
【解决方案2】:

你是在 ssh'ing 到你的工作树内的一个目录吗?如果 ssh 挂载点的根目录不包含 .git 目录,则 zsh 将无法找到 git 信息。确保您安装的内容包含 repo 的根目录。

至于 GIT_DISCOVERY_ACROSS_FILESYSTEM,它不会做你想做的事。 Git 默认会在文件系统边界处停止。如果你打开它(它只是一个环境变量),那么 git 将跨越文件系统边界并继续查找。但是,这几乎没有用处,因为您暗示您在本地计算机上有一个 .git 目录,该目录以某种方式用于管理由 sshfs 挂载部分组成的工作树。这没有多大意义。

【讨论】:

  • 干杯。这确实是问题所在。由于我已将目录复制到服务器,因此回购中不存在 .git。在 git clone 之后一切正常。出于某种原因,我正在做一个坏主意吗?有没有更好的方法来解决这个问题?
  • @Ribena:在 sshfs 挂载上使用 git repo 应该很好。但是,是的,手动复制您的 git 存储库而不是执行 git clone 通常不是一个好主意。
  • 我喜欢每个cloned repo 都是独立的原则,通过pullpush 同步。我可以想象我可能想要保持同一个 repo 的两个副本同步的情况。然后我会使用rsync(1) 而不是cp(1)。然后我会对此感到厌倦并重新使用clonepullpush。 :)
  • 这可能会导致正在装载卷的 docker 容器出现问题。
【解决方案3】:

如果 git 没有读取配置文件的权限,你也会得到这个。它只会在层次结构树中上升,直到需要跨文件系统。

【讨论】:

  • 好点——所以在这种情况下设置 GIT_DISCOVERY_ACROSS_FILESYSTEM=1 不会解决它。在 Fusion 中创建一个新的 ext4 驱动器并拉入该卷解决了它。
  • 在 Linux 的 Windows 子系统上,我必须在文件夹中 sudo chmod -R +777 .git 才能使其工作。
【解决方案4】:

从第一次谷歌点击来到这里:

您可以通过导出 GIT_DISCOVERY_ACROSS_FILESYSTEM=1 来关闭行为 AND 和警告。

在heroku上,如果你heroku config:set GIT_DISCOVERY_ACROSS_FILESYSTEM=1,警告就会消失。

这可能是因为您正在从源代码构建一个 gem,并且 gemspec 壳输出到 git,就像今天的许多人一样。因此,您仍然会收到警告 fatal: Not a git repository (or any of the parent directories): .git,但要改天解决 :)

我的答案与以下内容重复: - 评论GIT_DISCOVERY_ACROSS_FILESYSTEM problem when working with terminal and MacFusion

【讨论】:

    【解决方案5】:

    我的问题是我不在刚刚克隆的正确 git 目录中。

    【讨论】:

      【解决方案6】:

      尝试不同的协议。例如, git:// 可能有来自您的防火墙的问题;改用 https: 尝试 git clone。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-18
        • 2017-01-11
        • 1970-01-01
        • 2022-09-24
        • 2014-12-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多