无法创建“路径/到/回购/外部/.git/index.lock”:权限被拒绝

时间:2019-06-11 10:05:55

标签: python git ubuntu

我正在运行一个python命令,该命令生成一些代码并使用git签出一些提交。但是,尝试创建文件.git / index.lock时会引发异常。根目录拥有该目录,因此如果没有sudo,我将无法创建任何文件。

我尝试使用sudo(sudo ./run.py)运行命令。这也没有用,因为那样就找不到我的ssh密钥。是否可以解决此问题而无需更改.git的所有权以及创建根ssh密钥?这两个东西我都不想要。我见过类似的问题,但这些答案在这里都无效。

fatal: Unable to create '/path/.git/index.lock': Permission denied
Traceback (most recent call last):
  File "./run.py", line 155 in <module>
  ...
  ...
  File "/usr/lib/python3.6/subprocess.py", line 418 in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['git', 'reset', '--hard', <hash>]' returned non-zero exist status 128.

2 个答案:

答案 0 :(得分:0)

如果没有写入存储库的权限,您将无法执行任何Git检出。但是,如果要使用SSH密钥,则可以尝试使用sudo -E而不是普通的sudo来运行。这将要求sudo保留您的主目录和任何代理变量,这将使您可以使用SSH密钥。

请注意,在某些系统上,保护环境的功能已禁用或受限制,因此,在这些情况下将不起作用。在这样的环境中,您需要编辑/etc/sudoers或使用其他某种技术来获取凭据(例如,根拥有的凭据存储和HTTPS)。

答案 1 :(得分:0)

您必须使用http或https克隆git存储库。 并执行以下命令: git config —全局credential.helper wincred git获取 第一次它将要求输入密码并保存。 下次执行git fetch时,它不会询问密码。

注意:如果要更改密码,您必须做同样的事情。