由于新工作的原因,我将从 Ubuntu 14.04 切换到 OSX Yosemite。
我主要使用 R 工作,我使用 RStudio 和 git 来管理服务器(Debian)上的代码。为此,我使用 sshfs 安装了服务器,并像本地卷一样使用它,效果完美。
我尝试在 OSX 中执行此操作,但通过 osxfuse+sshfs 挂载它。但是,在 OSXFUSE 卷上运行时 git 无法正常工作,当我尝试提交更改时出现以下错误:
fatal: Unable to create '/Users/maltethodberg/server/home/nzl922/rstudio_projects/mactest2/.git/index.lock': File exists.
If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.
不过,我可以使用在我的机器上本地创建的 Rstudio 创建和管理 git 项目。
有没有一些我不知道的技巧可以让 git 在 OSX 上与 sshfs 很好地配合?此时我不确定服务器或我的本地计算机是否有问题。
任何帮助是极大的赞赏!
答案1
.git 文件夹中可能有一个 index.lock 文件导致此错误消息。每当一个用户进行更改并且锁由另一用户拥有时,就会显示该错误。这将保护本地 git 树免受不同用户提交的相互干扰。
您可能想知道为什么远程系统上的用户不拥有该锁,因为该帐户归您所有。这可能是由于 osxfuse 和 sshfs 没有向您提供正确的权限。发生的情况是,远程系统尝试将本地用户和组 ID 与远程系统上的用户和组 ID 进行匹配。这可能就是导致问题的原因。您可以尝试让 sshfs 获取远程系统上的正确权限。
从这个帖子我引用:
如果您从命令行调用 sshfs,只需添加 -o defer_permissions。如果您使用 Macfusion,请将 -o defer_permissions 放入“SSH 高级 > 额外选项”中。