问题描述
怎么看看git ls-files
脚本?
是否可以修复索引文件或从corupted索引文件中提取文件列表?
也许可以使用正则表达式?
最好是在python 2.7.6中
1楼
根据腐败程度,这可能是也可能不可行。 Git的数据结构和相关工具更适合于检测腐败而不是修复它。
特别是,索引本身不是存储库的一部分,它是从当前内容派生的,因此在大多数情况下,最好删除它并执行git reset
以重新创建它。
无论谁读到你的问题,都可能想知道你的存储库是如何进入该状态的。
考虑到这一点,这里有几个想法:
索引的最后20个字节是到该点为止的文件内容的sha1。 如果那些已损坏,您可以使用十六进制编辑器覆盖它们。
~$ python3
>>> data = open('.git/index', 'rb').read()
>>> data[-20:].hex()
'e211d8f60209ca8571c2acc73f9a24ef523b5fa3'
>>> hashlib.sha1(data[:-20]).hexdigest()
'e211d8f60209ca8571c2acc73f9a24ef523b5fa3'
这可以解决由脑损伤工具引起的简单损坏。
如果你真的想从一个完全损坏的索引文件中恢复任何东西,你可能想要:
- 读取参考实现中的 。
-
查看中的
parse_index
例程。 - 查看索引文件导致的特定错误。
- 仔细修补该例程以继续处理坏数据而不会崩溃。
另一种方法可能是使用实用程序,如果您只想查看文件名列表。 您将丢失相关的二进制信息(并且某些二进制信息将包含可打印的ASCII垃圾)。