我知道我应该死在终端中使用git,但我在Mac上使用一个名为Sourcetree的Git客户端,让整个事情变得更加性感。
问题是我添加到我的设置中的新Synology NAS硬盘。在我的Mac上安装了一个NAS共享文件夹时,Sourcetree在尝试暂存/提交/推送时会发出嘎嘎声。
我的主分支在GitHub上,所以我使用Sourcetree克隆了一个repo到已安装的驱动器。作为一个快速测试,我编辑了一个不重要的文件,保存并观察了客户端中的未分级更改。到目前为止成功;已编辑的文件将显示在Sourcetree的未暂存窗口中。我去上演吧。致命错误:
git -c diff.mnemonicprefix = false -c core.quotepath = false -c credential.helper = sourcetree add -f - README.md
致命:无法编写新的索引文件
已完成但有错误,请参阅上文
我查看了隐藏.git
文件夹中索引文件的文件权限(使用NAS目录浏览器,因为Mac没有显示隐藏文件。文件权限是读取,写入,但是在允许执行文件之后,使用Sourcetree的阶段/提交/推送尝试工作。
显然,我不想每次克隆git存储库时都要手动调整文件权限,所以有人对于为什么Sourcetree / Git没有创建具有更多有用文件权限的repo克隆有任何见解?
为了记录,我尝试了与GitHub OSX客户端相同的操作,这似乎是成功的(不需要编辑权限)。但我发现GitHub客户端有点原始,并且更愿意使用Sourcetree。
答案 0 :(得分:5)
一般来说是git。 This answer表示,这是因为文件锁定。有关更多信息,请搜索SO以获取“git samba”
根据我的经验,在网络驱动器上使用非裸存储库进行操作是一个坏主意。
最佳做法: http://git-scm.com/book/ch4-1.html
所以:
在任何情况下,建议带有工作副本的git repo驻留在本地磁盘上。
答案 1 :(得分:1)
经过大量的浪费时间后,我遇到了以下解决方案:
在Synology NAS服务器上:
控制面板 - >文件共享和权限 - > Win / Mac / NFS - > Mac文件服务 - >应用默认Unix权限 - 选中此框并重新启动文件服务。
红色鲱鱼 - 我试过的东西它没用。
a)将Git设置从使用NAS系统直接更改为通过ssh使用Git Server。 b)使用/不使用Sourcetree进行git访问 c)可能还有十几件事。
请注意,问题与Git设置无关,而是与检出的目录位置有关。如果没有选中上面的方框,我甚至无法通过终端更改索引文件的权限或所有权 - 尽管我应该通过SSH来完成。
Robert Ramey