首页 > 解决方案 > Git 命令在 vagrant 机器中没有 sudo 就无法工作

问题描述

我的流浪机器上有一个项目,我想将它推送到我的 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。Vagrant = 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

标签: gitubuntuvagrantvirtualboxubuntu-18.04

解决方案


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

  1. 我将 macOS 上的 virtualbox 从 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:/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.


推荐阅读