web-dev-qa-db-ja.com

gitでブランチが壊れている、致命的:現在のブランチが壊れているようです

これが私のケースです:

  • 私は1つのブランチで作業していました。
  • 新しいコミットをリモートにプッシュしました。
  • Masterブランチに切り替えました。

しかし、git checkout masterコマンドを入力した後、突然、コンピューターが 死のブルースクリーン に遭遇し、予期しない強制シャットダウンが発生しました。コンピューターを再起動した後、現在のブランチのステータスを確認しました。その結果、すべてのファイルを新しいファイルとしてマークしました。

今、私はこの時点で行き詰まり、git logコマンドの後にエラーが発生します

$ git log
fatal: your current branch appears to be broken

この問題を解決してブランチを回復するにはどうすればよいですか?.

私はWindows 7とgit bash最新バージョンを使用しています

編集:このブランチを削除したくない

35
eirenaios

Windows 7で同様の問題に遭遇しました。私の場合、./git/HEADの下にある現在のブランチファイル(\.git\refs\headsで参照)が壊れていました。

壊れた現在のブランチのハッシュコードを同じブランチ名の.git\logs\refs\headsで見つけました。

そして、メモ帳でそのファイル(.git\logs\refs\heads\xxx)を開き、4番目の数値(ハッシュコード)を(.git\refs\heads\xxx)にコピーして、問題を修正しました

39
David Zhang

.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ハッシュのみが含まれている必要があります。

10
Ilker Cat

ブランチの名前を名前空間付き(またはフォルダー)のブランチに変更しようとすると、このエラーが発生する可能性があります。

その場合は、.git/logs/refs/heads/<name>および.git/refs/heads/<name>ディレクトリに移動すると、ブランチがファイルを含むフォルダーになっていることがわかります。

両方のフォルダーで、ファイルをフォルダーのレベルに移動し、そのブランチをチェックアウトして、空になったフォルダーを削除すると、エラーなしでgit checkout -b <name>/<subname>、またはgit branch -M <name>/<subname>を実行できるようになります。

6
horsantula

ファイルのアクセス許可の問題が原因で発生することもあります。リポジトリ内のすべてのファイルに対する適切なアクセス許可があるかどうかを確認してください。

3
Amit P

ブランチ名には、おそらくいくつかの特殊文字などが含まれています。

チェックアウトのルートディレクトリ(.git/ディレクトリは)および

  1. リストアイテムの編集.git/packed-refs;ブランチ名のある行が表示されたら、それを削除します
  2. 覗く .git/refs/heads forブランチにちなんで名付けられたファイル。ある場合は削除してください
2

同じ問題があった。 .git\refs\heads \を削除すると、問題が解決しました。

1
Hike Nalbandyan

リポジトリを新しいフォルダーに複製し、変更されたファイルを置き換えることで解決しました。良い解決策ではないようですが、安全です!

0
reverie_ss