github错误:没有足够的权限将对象添加到资料档案库数据库

fnvucqvd  于 2022-11-20  发布在  Git
关注(0)|答案(3)|浏览(294)

从应用程序文件夹运行这些命令时:

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

我得到错误:

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$

我试着下这个命令:

chown -R user:user /project/directory

但是,由于我一开始就运行了我不确定的命令,我遇到了一大堆麻烦,我想知道这是否是正确的解决方案。
如果用户是“Christopher”,而我的Rails应用程序所在的文件夹名为“myapp”,那么确切的语法应该是什么呢?

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

inkz8wg91#

您不小心使用提升的权限将文件或文件夹提交给了git,而现在git无法修改这些对象。安全的做法是递归地强制.git/objects/下所有文件的所有权给您当前的用户,以解决这个问题。
1.请确保您位于出现错误的存储库中。
1.输入以下命令获取您的用户名
whoami
1.输入此命令
sudo chown -R your_user_name .git/*
1.终于
git add .

xwbd5t1u

xwbd5t1u2#

chown [ -f ] [ -h ] [ -R ] Owner [ :Group ] { File ... | Directory ... }

man page
chown命令会将File参数所指定之档案的拥有者变更为Owner参数所指定的使用者。Owner参数的值可以是/etc/passwd档案中的使用者ID或登入名称。您也可以选择性地指定群组。Group参数的值可以是/etc/group档案中的群组ID或群组名称。
关于-R选项
-R型
以递归方式对目录进行降序,更改每个文件的所有权。当遇到符号链接并且该链接指向某个目录时,将更改该目录的所有权,但不会进一步遍历该目录。
所以

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

会将update.js.erb文件的所有者更改为组christophe中的用户user,这可能不是您想要的。
在您的情况下,将回购协议的所有者更改为您自己,即

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

应该足够了。
如果您不知道自己的用户名,可以使用whoami命令查找。

ycl3bljg

ycl3bljg3#

你可以访问.git/文件夹中的所有文件,只需运行以下命令:

sudo chmod a+xrw .git/*

相关问题