【问题标题】:Git commands not working without sudo in vagrant machineGit 命令在 vagrant 机器中没有 sudo 就无法工作
【发布时间】:2019-12-23 10:41:09
【问题描述】:

我的 vagrant 机器上有一个项目,我想将它推送到我的 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 的权限不足

错误:file1:插入数据库失败

错误:无法索引文件 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 上运行的 vagrant 机器上有 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

【问题讨论】:

    标签: git ubuntu vagrant virtualbox ubuntu-18.04


    【解决方案1】:

    这些是我解决问题的步骤:

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

      $ vagrant plugin install vagrant-vbguest

    3. 重新加载 vagrant 机器。

      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:/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 命令。

    【讨论】:

      【解决方案2】:

      如果检查内容的权限,权限是可以的:

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

      可以肯定的是,您可能想要做一个sudo chown -R vagrant:vagrant .git

      同时添加core.sharedRepository 设置:

      git config --global core.sharedRepository group
      

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

      我认为错误存在于 Guest Additions 中,因此您需要确保安装了正确版本。
      在 Ubuntu 中运行 modinfo vboxguest 以查看安装的版本。

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

      【讨论】:

      • 我运行了您推荐的命令,但如果我在没有sudo 的情况下运行该命令,错误仍然存​​在。 .git/objects 的权限也很好,我已经更新了帖子。
      • .git/objects里面多一层怎么样?
      • @Kakar 你能在git config --global core.sharedRepository group之后再试一次吗?
      • @tripleee 在该级别上的权限也很好。我已经更新了帖子。
      • @VonC 还是一样。
      猜你喜欢
      • 2020-04-07
      • 1970-01-01
      • 2019-01-16
      • 1970-01-01
      • 1970-01-01
      • 2021-04-27
      • 2021-07-07
      • 2020-07-16
      • 2017-11-03
      相关资源
      最近更新 更多