1

我想检查一个较旧的提交到我的工作目录以弄乱一些东西,所以我在我的 repo 的根目录中执行了以下命令:

git checkout 2aa2c5 .

但是什么也没发生,# 提示符就回来了。我又执行了几次命令,但似乎什么也没发生。然后我做了:

git status

这表明我仍然在master. 然后我做了:

git checkout master

因为我不确定发生了什么,只是想回到原来的位置。它回来了Already on master

但是现在我的网站无法访问,现在每个文件似乎都具有 644 权限?我真的不确定发生了什么?看起来虽然我最初尝试签出提交没有做任何事情,但它已经弄乱了我的文件权限和/或文件所有权。

更新:我不认为这是问题的许可。我认为问题在于所有者和组的所有文件都已更改为root?我在结帐时以root身份登录,这会导致这种情况吗?

一般来说,我是 git 和 Linux 文件权限的新手,如果有人能对此有所了解,我将不胜感激。

谢谢

4

1 回答 1

1

权限和所有权对于 Web 服务器来说非常重要。如果您弄错了,错误的人(= 破解者)可以读取或修改您的文件。因此,请确保您了解自己在做什么。

根据经验,永远不要作为root. 一个愚蠢的错误(比如一只松软的鼠标,粘贴太多)可能会让您花费数小时的工作。

在您的情况下,文件的所有权似乎已更改。要解决此问题,您必须删除所有文件(以 root 身份;小心- 如果您犯了错误,您可能想要的更多文件将会消失!)

尝试保留 Git 存储库(即删除.git文件夹以外的所有内容),但我担心git以 root 身份运行也已经弄乱了该文件夹中的某些权限。

因此,您最好的选择可能是删除整个树(包括 .git 文件夹)并使用正确的用户再次克隆它。

有关的:

于 2013-09-02T13:51:30.853 回答