GitPython не может найти главный коммит

Я хочу получить объект фиксации HEAD моего репо. Однако, когда я пытаюсь вызвать repo.head.commit, я получаю следующую ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python36-32\lib\site-packages\git\refs\symbolic.py", line 200, in _get_commit
    obj = self._get_object()
  File "C:\Python36-32\lib\site-packages\git\refs\symbolic.py", line 193, in _get_object
    return Object.new_from_sha(self.repo, hex_to_bin(self.dereference_recursive(self.repo, self.path)))
  File "C:\Python36-32\lib\site-packages\git\objects\base.py", line 64, in new_from_sha
    oinfo = repo.odb.info(sha1)
  File "C:\Python36-32\lib\site-packages\git\db.py", line 37, in info
    hexsha, typename, size = self._git.get_object_header(bin_to_hex(sha))
  File "C:\Python36-32\lib\site-packages\git\cmd.py", line 1073, in get_object_header
    return self.__get_object_header(cmd, ref)
  File "C:\Python36-32\lib\site-packages\git\cmd.py", line 1062, in __get_object_header
    return self._parse_object_header(cmd.stdout.readline())
  File "C:\Python36-32\lib\site-packages\git\cmd.py", line 1024, in _parse_object_header
    raise ValueError("SHA could not be resolved, git returned: %r" % (header_line.strip()))
ValueError: SHA could not be resolved, git returned: b''

Вызывая repo.head.commit во второй раз (и каждый раз после этого), я получаю следующую ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python36-32\lib\site-packages\git\refs\symbolic.py", line 200, in _get_commit
    obj = self._get_object()
  File "C:\Python36-32\lib\site-packages\git\refs\symbolic.py", line 193, in _get_object
    return Object.new_from_sha(self.repo, hex_to_bin(self.dereference_recursive(self.repo, self.path)))
  File "C:\Python36-32\lib\site-packages\git\objects\base.py", line 64, in new_from_sha
    oinfo = repo.odb.info(sha1)
  File "C:\Python36-32\lib\site-packages\git\db.py", line 37, in info
    hexsha, typename, size = self._git.get_object_header(bin_to_hex(sha))
  File "C:\Python36-32\lib\site-packages\git\cmd.py", line 1073, in get_object_header
    return self.__get_object_header(cmd, ref)
  File "C:\Python36-32\lib\site-packages\git\cmd.py", line 1061, in __get_object_header
    cmd.stdin.flush()

Дополнительная информация: repo.head -> <git.HEAD "HEAD">

Я в среде Windows 10. Это может быть связано с другим моим вопросом: Git не работает с Ubuntu -> Общий каталог Windows Samba


person aoh    schedule 30.01.2018    source источник


Ответы (2)


У меня сработала такая инициализация объекта repo:

import git

repo = git.Repo('.', odbt=git.db.GitDB)

Однако кажется, что в этом решении могут быть некоторые предостережения. Более подробную информацию можно найти здесь.

person Ariel    schedule 24.06.2020

Проблема возникла из-за того, что мой каталог находился на пути UNC, и была исправлена ​​​​путем обновления моей версии git.

Git не работает с Ubuntu → Windows Общий каталог Samba

person aoh    schedule 30.01.2018