Git“无法取消链接旧文件(拒绝权限)”错误,但更新权限不起作用

时间:2019-08-30 04:20:51

标签: git

我正在分支(Branch-A)中的单个文件上工作,提交了我的代码并推送了我的更改。然后我签出了一个新的分支(B分支),做了一些工作,但注意到我正在对在B分支中使用的同一文件进行更改。

我运行git checkout -- /file.php以还原更改,但收到消息:

  

错误:无法取消链接旧的“ file.php”(权限被拒绝)

谷歌搜索问题,我发现很多StackOverflow回答说要更改文件的权限,我尝试过:

chmod ug+w file.php

chmod 777 file.php

但是仍然出现相同的问题,并显示相同的错误消息。

有人会知道这是什么还是我下一步能做什么?

2 个答案:

答案 0 :(得分:0)

根据您的操作系统,首先检查与该文件关联的权限

cd /path/to/repo
# assuming file.php is at the root directory of the repository
ls -alrth file.php
git checkout -- file.php

(尝试在没有/的情况下进行结帐)

与我mentioned here一样,请确保没有其他任何工具/编辑器打开文件。
另请参见this answer,并尝试在存储库中设置git config core.sharedRepository true

答案 1 :(得分:0)

在基于Unix或Linux的系统上,删除文件(或为此创建文件)的能力通常由文件所在目录的权限控制。因此,file.php取决于工作树的权限(在本例中为.或它的路径):

$ ls -ld
drwxr-xr-x 12 root root 4096 ...

或:

# in a different directory
$ ls -ld
drwxrwxr-x 46 vagrant vagrant 4096 Aug 29 23:34 .

例如。

在前一种情况下,该目录归root所有,并且只能由root写入,因此只有超级用户才能创建或删除文件。在第二种情况下,该目录归用户vagrant和组vagrant所有,并且用户和组均可写,因此用户vagrant可以创建或删除文件,因此属于vagrant组成员的任何用户(在此特定系统上,该用户始终仅为vagrant用户)。

如果您作为用户没有对包含目录的写访问权,则可以根据需要更改所有权(用户和/或组)和模式,或者以超级用户身份进行操作(通常,超级用户可以即使权限设置为拒绝通过rootsudo的访问,也可以执行任何操作。限制作为超级用户完成的工作量是明智的。