これが私のケースです:
しかし、git checkout master
コマンドを入力した後、突然、コンピューターが 死のブルースクリーン に遭遇し、予期しない強制シャットダウンが発生しました。コンピューターを再起動した後、現在のブランチのステータスを確認しました。その結果、すべてのファイルを新しいファイルとしてマークしました。
今、私はこの時点で行き詰まり、git log
コマンドの後にエラーが発生します
$ git log
fatal: your current branch appears to be broken
この問題を解決してブランチを回復するにはどうすればよいですか?.
私はWindows 7とgit bash最新バージョンを使用しています
編集:このブランチを削除したくない
Windows 7で同様の問題に遭遇しました。私の場合、./git/HEAD
の下にある現在のブランチファイル(\.git\refs\heads
で参照)が壊れていました。
壊れた現在のブランチのハッシュコードを同じブランチ名の.git\logs\refs\heads
で見つけました。
そして、メモ帳でそのファイル(.git\logs\refs\heads\xxx
)を開き、4番目の数値(ハッシュコード)を(.git\refs\heads\xxx
)にコピーして、問題を修正しました
.git\refs\headsディレクトリ内のファイルはブランチです。それらのファイルを確認してください。それらには、単一のコミットオブジェクトのSHA-1ハッシュのみを含める必要があります。このハッシュは、最新のコミットSHA-1キーであり、同時にHEAD=です。
SHA-1キーをコピーして入力する
$ git cat-file -t 5917fefd485f655ab369d4e9eeda3c157c03f514
commit
$ git cat-file -p 5917fefd485f655ab369d4e9eeda3c157c03f514
tree b75cab3c54b780075b312be3e878b389a2baf904
parent 8235189aa22169295243d295fb1cc2ff2f8f7cd5
author Ilker Cat <[email protected]> 1495136738 +0200
committer Ilker Cat <[email protected]> 1495136738 +0200
2番目の出力は、コミットオブジェクトに基本的に含まれるものです。 .git\refs\heads\masterの下のマスターブランチのコミットオブジェクトと、そのツリーおよび親SHA-1キーが破損していないかどうかを確認してください。
マスターブランチファイル内のいくつかのアポストロフィでさえ、「壊れたブランチ」につながります。これには、最新のコミットオブジェクトのSHA-1ハッシュのみが含まれている必要があります。
ブランチの名前を名前空間付き(またはフォルダー)のブランチに変更しようとすると、このエラーが発生する可能性があります。
その場合は、.git/logs/refs/heads/<name>
および.git/refs/heads/<name>
ディレクトリに移動すると、ブランチがファイルを含むフォルダーになっていることがわかります。
両方のフォルダーで、ファイルをフォルダーのレベルに移動し、そのブランチをチェックアウトして、空になったフォルダーを削除すると、エラーなしでgit checkout -b <name>/<subname>
、またはgit branch -M <name>/<subname>
を実行できるようになります。
ファイルのアクセス許可の問題が原因で発生することもあります。リポジトリ内のすべてのファイルに対する適切なアクセス許可があるかどうかを確認してください。
ブランチ名には、おそらくいくつかの特殊文字などが含まれています。
チェックアウトのルートディレクトリ(.git/
ディレクトリは)および
.git/packed-refs
;ブランチ名のある行が表示されたら、それを削除します.git/refs/heads for
ブランチにちなんで名付けられたファイル。ある場合は削除してください同じ問題があった。 .git\refs\heads \を削除すると、問題が解決しました。
リポジトリを新しいフォルダーに複製し、変更されたファイルを置き換えることで解決しました。良い解決策ではないようですが、安全です!