12

我曾经能够从我的 App 文件夹中执行以下操作:

git add .
git commit -m "commit details"
git push

并且我本地机器上的最新版本的应用程序将在我的主仓库中备份,在 github 上。

现在,当我得到git add .命令时,我得到:

mycompaq@ubuntu:~/myapp$ git add .
error: insufficient permission for adding an object to repository database .git/objects

error: app/views/reviews/update.js.erb: failed to insert into database
error: unable to index file app/views/reviews/update.js.erb
fatal: updating files failed
mycompaq@ubuntu:~/myapp$ 

我在 Stackoverflow 上的一条消息中读到了解决类似问题的方法是:

chown -R user:user /project/directory

但是看到我首先通过运行我不确定的命令遇到了一大堆麻烦,我想知道这是否适合我的命令。它有什么作用?可以撤消吗?

如果用户是“Christophe”,并且存储我的 Rails 应用程序的文件夹称为“myapp”,那么确切的语法应该是什么。我的意思是应该是

chown -R user:christophe /myapp/app/views/reviews/update.js.erb

抱歉有这些问题。

4

4 回答 4

30
  1. 确保您位于出现错误的存储库中。

  2. 通过键入获取您的用户名

    whoami

  3. 输入这个命令

sudo chown -R your_user_name .git/*

于 2014-10-01T09:00:34.727 回答
24
chown [ -f ] [ -h ] [ -R ] Owner [ :Group ] { File ... | Directory ... }

手册页

chown 命令将 File 参数指定的文件的所有者更改为 Owner 参数指定的用户。Owner 参数的值可以是 /etc/passwd 文件中的用户 ID 或登录名。可选地,也可以指定一个组。Group 参数的值可以是在 /etc/group 文件中找到的组 ID 或组名。

关于 -R 选项

-R
递归下降目录,更改每个文件的所有权。当遇到符号链接并且链接指向目录时,该目录的所有权会更改,但目录不会进一步横向。

所以

chown -R user:christophe /myapp/app/views/reviews/update.js.erb

会将文件的所有者更改为groupupdate.js.erb中的用户,这可能不是您想要的。userchristophe

在您的情况下,将回购的所有者更改为您自己,即

sudo chown -R christophe /path/to/your/local/repo

应该足够了。

如果您不知道您的用户名,您可以使用whoami命令查找。

于 2013-08-19T22:49:25.550 回答
0

您可以授予对 .git/ 文件夹中所有文件的访问权限。只需运行以下命令:

sudo chmod a+xrw .git/*
于 2020-01-13T06:52:20.793 回答
-1

简单地说,我使用 sudo 命令允许我的文件夹及其文件

sudo chmod -R 777 directory/
于 2019-05-30T06:14:39.420 回答