在流浪汉机器中没有sudo的git命令不起作用

时间:2019-12-23 10:41:09

标签: git ubuntu vagrant virtualbox ubuntu-18.04

我在无业游民的计算机上有一个项目,希望将其推送到github存储库中。但是如果不使用sudo,我将无法添加对象。

  1. 我已经初始化了git
    vagrant@vagrant:/vagrant/testDir$ git init
    Initialized empty Git repository in /vagrant/testDir/.git/`
    
  2. 之后,如果我运行命令添加内容
    vagrant@vagrant:/vagrant/testDir$ git add .`
    
    然后我得到这个错误:
  

错误:没有足够权限将对象添加到存储库数据库.git / objects

     

错误:文件1:无法插入数据库

     

错误:无法索引文件file1

     

致命:添加文件失败

尽管如果我使用sudo(即sudo git add .)运行该命令,则不会出现任何错误。

我已经确认了项目内部的许可,而且还可以:

vagrant@vagrant:/vagrant/testDir$ ls -al
total 0
drwxr-xr-x 1 vagrant vagrant 160 Dec 23 10:33 .
drwxr-xr-x 1 vagrant vagrant 160 Dec 23 10:33 ..
drwxr-xr-x 1 vagrant vagrant 352 Dec 23 10:33 .git
-rw-r--r-- 1 vagrant vagrant   0 Dec 23 10:33 file1
-rw-r--r-- 1 vagrant vagrant   0 Dec 23 10:33 file2.txt

我在运行于macOS High Sierra的无业游民的计算机上安装了ubuntu 18.04。 无业游民= 2.2.2 虚拟盒子= 6.0.8 r130520

你能帮我吗?

更新1

此外,在.git/目录上的权限也很好

vagrant@vagrant:/vagrant/testDir/.git$ ls -al
total 12
drwxr-xr-x 1 vagrant vagrant 320 Dec 23 10:52 .
drwxr-xr-x 1 vagrant vagrant 160 Dec 23 04:12 ..
-rw-r--r-- 1 vagrant vagrant  23 Dec 23 04:12 HEAD
drwxr-xr-x 1 vagrant vagrant  64 Dec 23 04:12 branches
-rw-r--r-- 1 vagrant vagrant 111 Dec 23 04:12 config
-rw-r--r-- 1 vagrant vagrant  73 Dec 23 04:12 description
drwxr-xr-x 1 vagrant vagrant 416 Dec 23 04:12 hooks
drwxr-xr-x 1 vagrant vagrant  96 Dec 23 04:12 info
drwxr-xr-x 1 vagrant vagrant 160 Dec 23 04:12 objects
drwxr-xr-x 1 vagrant vagrant 128 Dec 23 04:12 refs

更新2

.git/objects目录中的权限也可以。

vagrant@vagrant:/vagrant/testDir/.git/objects$ ls -al
total 0
drwxr-xr-x 1 vagrant vagrant 160 Dec 23 11:06 .
drwxr-xr-x 1 vagrant vagrant 320 Dec 23 11:06 ..
drwxr-xr-x 1 vagrant vagrant  96 Dec 23 11:06 e6
drwxr-xr-x 1 vagrant vagrant  64 Dec 23 11:06 info
drwxr-xr-x 1 vagrant vagrant  64 Dec 23 11:06 pack

2 个答案:

答案 0 :(得分:2)

这些是我为解决问题而采取的步骤:

  1. 我将macOS上的虚拟机从6.0.8 r130520降级到6.0.4 r128413。
  2. 已安装vagrant-vbguest插件

    $ vagrant plugin install vagrant-vbguest

  3. 重新加载无业游民的机器。

    user@MacBook-Pro vagrant-project-machine $ vagrant reload ==> default: Attempting graceful shutdown of VM... ==> default: Checking if box 'bento/ubuntu-18.04' is up to date... ... ... ==> default: Machine booted and ready! ... [default] GuestAdditions versions on your host (6.0.4) and guest (6.0.8) do not match. ... ... The following additional packages will be installed: linux-headers-4.15.0-51 ... ...

最后,您可以通过运行以下命令进行确认:

user@MacBook-Pro vagrant-project-machine $ vagrant vbguest --status
...
...
[default] GuestAdditions 6.0.4 running --- OK.

您还可以通过运行以下命令在无业游民机器中进行确认:

vagrant@vagrant:/vagrant/testDir$ modinfo vboxguest
filename:       /lib/modules/4.15.0-51-generic/misc/vboxguest.ko
version:        6.0.4 r128413
license:        GPL
description:    Oracle VM VirtualBox Guest Additions for Linux Module
author:         Oracle Corporation
srcversion:     95F53B9B95BC6E03156A1D8
alias:          pci:v000080EEd0000CAFEsv00000000sd00000000bc*sc*i*
depends:        
retpoline:      Y
name:           vboxguest
vermagic:       4.15.0-51-generic SMP mod_unload 

现在,我无需使用sudo就可以运行git命令。

答案 1 :(得分:1)

  

如果检查内容的权限,则权限没问题:

它们在第一层。
但是它们在.git/objects中吗?

您可以肯定要做一个sudo chown -R vagrant:vagrant .git

还添加core.sharedRepository设置:

git config --global core.sharedRepository group

OP Kakar提到in the comments hashicorp/vagrant issue 10913,其中指出:

  

我相信该错误存在于来宾添加中,因此您需要确保已安装正确的版本。
  在Ubuntu中运行modinfo vboxguest,以查找已安装的版本。

     

我似乎已通过使用dotless-de/vagrant-vbguest将我的Virtualbox Guest Additions从6.0.10更新到6.0.12来解决了这个问题。