获得权限后如何在WSL上使用git重置文件

时间:2019-01-31 14:48:47

标签: git permissions windows-subsystem-for-linux

[编辑]:此问题已解决,请参见下文

我有一个文件夹脚本,其中有git版本控制下的bash脚本。

ls -al产生

drwxrwxrwx 1 me me  512 Jan 21 16:06 .
drwxrwxrwx 1 me me  512 Jan 23 05:34 ..
-rwxrwxrwx 0 me me 1427 Jan 31 08:08 update_db.sh

我想取消更改,所以自然而然地,我做了git checkout -- scripts/。但是我收到以下错误:

error: unable to unlink old 'scripts/update_db.sh': No such file or directory


所以我尝试了以下操作:

  1. 签出临时分支,硬重置
    • git checkout -b tmp
    • git reset --hard master

导致

error: unable to unlink old 'scripts/update_db.sh': No such file or directory
fatal: Could not reset index file to revision 'master'.

好,所以我搜索并找到this SO post

这导致我尝试修复权限(尽管看起来我对文件及其父目录都具有正确的权限[见上文])。

我在目录上运行sudo chmod -R ug+w scripts;并尝试重复上述操作,结果相同...

我似乎也无法通过Windows资源管理器执行任何操作(说我没有权限)。我还应该注意,我运行了rm scripts/update_db.sh

rm: cannot remove 'scripts/update_db.sh': No such file or directory

任何帮助将不胜感激!


解决方案 我认为这与我使用的终端没有任何关系,但是看来这可能是问题所在。我一直在使用open-wsl,但似乎没有为我授予Ubuntu用户的正确权限。

由于permissions是由启动该过程的用户定义的,所以我猜测open-wsl实际上不是 以root用户身份启动,因此无法删除。而且,以某种方式,我猜该文件是由具有root权限启动的Linux用户创建的,这意味着我的open-wsl用户和Windows用户将无法更改它。

无论如何,这只是我的理论,我仍然不确定在这里发生了什么,但是可以通过以root用户身份从Windows“开始”菜单启动Ubuntu shell,导航到该目录,然后{{1}来解决此问题。 }照常进行。rm

0 个答案:

没有答案