Состояние Git говорит, что он удален, потому что файл не существует в рабочей копии, поэтому проверка его исправляет состояние.
Похоже, что нет поддержки высокоуровневых классов и функций рабочей копии.в Далвиче еще.Вам придется иметь дело с деревьями, каплями и распаковкой объектов.
ОК, принял вызов: я могу сделать базовую проверку с помощью Dulwich:
#get repository object of current directory
repo = Repo('.')
#get tree corresponding to the head commit
tree_id = repo["HEAD"].tree
#iterate over tree content, giving path and blob sha.
for entry in repo.object_store.iter_tree_contents(tree_id):
path = entry.in_path(repo.path).path
dulwich.file.ensure_dir_exists(os.path.split(path)[0])
with open(path, 'wb') as file:
#write blob's content to file
file.write(repo[entry.sha].as_raw_string())
Он не удалит файлыкоторые должны быть удалены, не заботятся о вашем индексе и т. д.
См. также Отметьте проект github Mikofski для более полного кода, основанного на этом.