2015-10-08 7 views
8

ここに私の場合です:私は1つのブランチに取り組んでいた壊れた枝が、致命的な:あなたの現在のブランチが壊れているように見える

  • 新しいコミットをリモートにプッシュしました。
  • マスターブランチに切り替えました。

しかし、突然git checkout masterのコマンドを入力した後、私のコンピュータはblue screen of deathが発生し、予期せぬ力がシャットダウン起こりました。私のコンピュータを立ち上げた後、私は現在のブランチの状態をチェックしました。その結果、私はすべてのファイルを新しいファイルとしてマークしました。

は今、私はこの時点で立ち往生していますし、git logコマンドの後、私はどのようにこの問題を解決し、私の枝を回復するために、エラー

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

を取得しています?。

私は、Windows 7とのgit bashの最新バージョンで働いています

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

+0

ファイル '.git/HEAD'の内容は何ですか?有効なブランチ名を指していますか?ブランチ名は有効なコミットハッシュを指していますか? – knittl

答えて

6

が、私は私の場合のWindows 7上で同様の問題を満たすため、\.git\refs\headsの下で現在のブランチのファイルが(./git/HEADで参照してください)壊れていました。

同じ分岐名を持つ.git\logs\refs\headsに壊れた現在の分岐のハッシュコードが見つかりました。

そして、私はメモ帳を経由して、そのファイル(.git\logs\refs\heads\xxxを)開くことによって、問題を修正し、(.git\refs\heads\xxx)に第四の数(ハッシュコード)をコピー

+0

.gitフォルダが私の場合は隠されていました。 – PrakhaRaM

2

あなたは支店名は今、おそらくいくつかの特殊文字またはそのような何かが含まれています。

あなたはあなたの(.git/ディレクトリがある)チェックアウトと

  1. リスト項目の編集.git/packed-refsのルートディレクトリに移動しなければなりません。あなたのブランチ名の行が表示された場合は、それを削除してください
  2. .git/refs/heads forあなたの枝の名前にちなんで名付けられたファイルを見てください。 を参照してください、それを削除してください
+0

これを実行した後、「すべてのファイルが新しい」のように扱われたように見えました。\ – rogerdpack

4

.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 

第二の出力は、Aのオブジェクトは、基本的に含まコミットものです。マスターブランチのコミットオブジェクトが.git \ refs \ heads \ masterにあり、ツリーと親のSHA-1キーが破損していないかどうかを確認してください。

マスターブランチファイル内のいくつかのアポストロフィも、「壊れたブランチ」につながります。最後のコミットオブジェクトSHA-1ハッシュのみを含む必要があります。

1

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

+0

この場合、唯一のユーザーです。すべての権利を持っている! – Suresh

1

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

3

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

ディレクトリ.git/logs/refs/heads/<name>.git/refs/heads/<name>に移動すると、ブランチがファイル内のフォルダになっていることがわかります。

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

+1

私の一日を保存しました、ありがとう! – CGK

+1

ありがとうございます。ほぼミニハートの攻撃を受けました! – 22kar

関連する問題