我正在分支(Branch-A)中的单个文件上工作,提交了我的代码并推送了我的更改。然后我签出了一个新的分支(B分支),做了一些工作,但注意到我正在对在B分支中使用的同一文件进行更改。
我运行git checkout -- /file.php
以还原更改,但收到消息:
错误:无法取消链接旧的“ file.php”(权限被拒绝)
谷歌搜索问题,我发现很多StackOverflow回答说要更改文件的权限,我尝试过:
chmod ug+w file.php
和
chmod 777 file.php
但是仍然出现相同的问题,并显示相同的错误消息。
有人会知道这是什么还是我下一步能做什么?
答案 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
用户)。
如果您作为用户没有对包含目录的写访问权,则可以根据需要更改所有权(用户和/或组)和模式,或者以超级用户身份进行操作(通常,超级用户可以即使权限设置为拒绝通过root
对sudo
的访问,也可以执行任何操作。限制作为超级用户完成的工作量是明智的。