git ls-files
のスクリプトを実行していますか? 索引ファイルを修復するか、訂正された索引ファイルからファイルのリストを抽出することは可能ですか? 正規表現では可能でしょうか?好ましくはPythonで2.7.6git ls-filesスクリプトの動作方法
5
A
答えて
3
破損のレベルによっては、これは実行可能かどうかは関係ありません。 Gitのデータ構造と関連するツールは、それを修正するよりも、破損を検出することにもっと適しています。
特に、インデックス自体はリポジトリの一部ではなく、現在の内容から派生しているため、ほとんどの場合、削除してgit reset
を作成して再作成するほうがよいでしょう。あなたの質問を読んだ人は、あなたのリポジトリがどのようにその状態になったのか疑問に思うかもしれません。ここで念頭に置いて
は、カップルの考えです:
インデックスの最後の20のバイトがそれまでのファイルの内容のSHA1です。それらが壊れている場合は、16進エディタを使用して上書きすることができます。
~$ python3
>>> data = open('.git/index', 'rb').read()
>>> data[-20:].hex()
'e211d8f60209ca8571c2acc73f9a24ef523b5fa3'
>>> hashlib.sha1(data[:-20]).hexdigest()
'e211d8f60209ca8571c2acc73f9a24ef523b5fa3'
これは、脳損傷を受けたツールによって引き起こされる単純な破損を修正する可能性があります。
あなたが本当に完全に破損したインデックスファイルからあなたができる何かを回復したい場合、あなたはおそらくしたい:リファレンス実装で
- 読むindex-format.txt。
parse_index
ルーチンをlibgit2に見てください。- インデックスファイルの特定のエラーを確認してください。
- 壊れないで悪いデータを続けるために、そのルーチンに慎重にパッチを当ててください。
別の方法として、ファイル名のリストを表示したい場合は、stringsユーティリティを使用することができます。関連するバイナリ情報が失われます(バイナリ情報には印刷可能なASCIIジャンクが含まれます)。
+0
文字列は非常に悪くないだけでなく、ゴミもたくさん –
関連する問題
- 1. 自動更新Gitスクリプト
- 2. Git拡張スクリプト - git logコマンドの使用方法
- 3. git bashスクリプトの "cd"コマンドが動作しない
- 4. フルテキストカタログのスクリプト作成方法
- 5. CronTabスクリプトの作成方法
- 6. git showがBASHスクリプトで動作しない
- 7. 自動実行スクリプトに手動で操作する方法は?
- 8. bashスクリプトの更新方法を作成する方法
- 9. Git Pullを自動化するBashスクリプト
- 10. 自動ターンON/OFF用スクリプトgit proxy(ECLIPSE)
- 11. `xargs`で` git add`を動作させる方法
- 12. Ajax domの後にjqueryスクリプトを動作させる方法は?
- 13. 'git pull'のデフォルトの動作
- 14. スクリプトからgitクローンを作成
- 15. git pushの後にbashスクリプトを実行する方法
- 16. gitリポジトリを再起動する方法
- 17. IPv6アドレスでスクリプトを動作させる方法
- 18. git add、expectスクリプト
- 19. gitでバックアップを作成する方法
- 20. libgit2のチェックアウトオプションを "git checkout"のように動作させる方法
- 21. PythonスクリプトはWindowsコマンドラインでWindowsErrorを投げ、Git Bashで動作します
- 22. Python Git Bash CMDスクリプト
- 23. クローン/プルバルクgitリポジトリのbashスクリプト
- 24. ファイルの展開方法(gitとgit GUI)
- 25. Pythonスクリプトを作る方法thats runnable
- 26. このJqueryスクリプトを特定の幅で動作させる方法
- 27. BASHスクリプトを特定のディレクトリでのみ動作させる方法は?
- 28. Gitzillaを動作させる方法
- 29. コミット後にコミット後のスクリプト(フック)が起動しないGit
- 30. バイナリファイルとスケーラビリティを持つgitの動作
既存の 'git-ls-files'バイナリがどこにあるのか探したいですか?あるいは、まったく同じことをする新しいスクリプトを書いてください。 _なぜ_?これはあなたの破損したインデックスファイルにどのように関連していますか?実際のファイルは '.git/index'ですか?他に何か? – Useless
はい私はgit-ls-filesと全く同じことをする新しいスクリプトを書く必要があります。悪意のある署名やハッシュをチェックすることなく、.git/indexファイル(壊れているかどうかは関係ありません)何か他のものだけ生ゴミなしのファイルリスト –