Git-所有文件在签出后都失去了可执行权限



我想签出一个旧的提交到我的工作目录来处理一些事情,所以我在repo的根目录中执行了以下命令:

git checkout 2aa2c5 .

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

git status

这表明我仍然使用master。然后我做了:

git checkout master

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

然而,现在我的网站无法访问,每个文件现在似乎都有权限644?我真的不确定发生了什么?看起来,尽管我最初尝试签出提交没有任何效果,但它破坏了我的文件权限和/或文件所有权。

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

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

感谢

权限和所有权对于web服务器来说非常关键。如果你弄错了,错误的人可以读取或修改你的文件。所以要确保你明白自己在做什么。

根据经验,永远不要像root那样工作。一个愚蠢的错误(比如一只松弛的鼠标剪切粘贴太多)可能会让你付出很多小时的工作。

在您的案例中,文件的所有权似乎发生了更改。要解决此问题,您必须删除所有文件(作为root用户;请小心-如果您犯了错误,您可能想要的更多文件将丢失!)

尝试保留Git repo(即删除除.git文件夹外的所有内容),但我担心以root身份运行git也会破坏该文件夹中的一些权限。

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

相关:

  • http://www.linux.org/threads/file-permissions-chmod.4094/
  • http://www.linuxquestions.org/linux/answers/Security/Quick_and_Dirty_Guide_to_Linux_File_Permissions

最新更新