[解決済み] Gitのエラー「object file ... is empty」はどうすれば直せますか?
質問
変更をコミットしようとすると、このエラーが表示されます。
error: object file .git/objects/31/65329bb680e30595f242b7c4d8406ca63eeab0 is empty
fatal: loose object 3165329bb680e30595f242b7c4d8406ca63eeab0 (stored in .git/objects/31/65329bb680e30595f242b7c4d8406ca63eeab0) is corrupt
試してみた
git fsck
得ました。
error: object file .git/objects/03/dfd60a4809a3ba7023cbf098eb322d08630b71 is empty
fatal: loose object 03dfd60a4809a3ba7023cbf098eb322d08630b71 (stored in .git/objects/03/dfd60a4809a3ba7023cbf098eb322d08630b71) is corrupt
このエラーを解決するにはどうしたらいいですか?
どのように解決するのですか?
私も同じような問題がありました。私のノートパソコンはGitの操作中にバッテリー切れになってしまったのです。ブー。
バックアップをとっていなかったので。(注:Ubuntu OneはGitのバックアップソリューションではありません。正気のリポジトリを破損したリポジトリで上書きしてくれます)
Gitのウィザードの皆さん、もしこの直し方がまずかったら、コメントを残してください。でも、私にとってはうまくいきました...少なくとも一時的にですが。
ステップ1:フォルダのバックアップを作成する .git (実際、私は何かを変更するすべてのステップの間にこれを行いますが、新しいコピー先の名前を付けて、例えば。 .git-old-1 , .git-old-2(英語版 など)。
cd ~/workspace/mcmc-chapter
cp -a .git .git-old
ステップ2:実行
git fsck --full
git fsck --full
error: object file .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e is empty
fatal: loose object 8b61d0135d3195966b443f6c73fb68466264c68e (stored in .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e) is corrupt
ステップ3:空ファイルを削除する。どうせ空っぽなんだからということで。
rm .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e
rm: remove write-protected regular empty file `.git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e'? y
ステップ3:実行
git fsck
をもう一度。引き続き、空のファイルを削除します。また
cd
の中に
.git
ディレクトリに移動して実行します。
find . -type f -empty -delete -print
を実行して、空のファイルをすべて削除しました。やがてGitは、オブジェクト・ディレクトリで実際に何かを行っていることを教えてくれるようになりました。
git fsck --full
Checking object directories: 100% (256/256), done.
error: object file .git/objects/e0/cbccee33aea970f4887194047141f79a363636 is empty
fatal: loose object e0cbccee33aea970f4887194047141f79a363636 (stored in .git/objects/e0/cbccee33aea970f4887194047141f79a363636) is corrupt
ステップ4:空のファイルをすべて削除した後、最終的にたどり着いたのは
git fsck
を実際に動かしてみました。
git fsck --full
Checking object directories: 100% (256/256), done.
error: HEAD: invalid sha1 pointer af9fc0c5939eee40f6be2ed66381d74ec2be895f
error: refs/heads/master does not point to a valid object!
error: refs/heads/master.u1conflict does not point to a valid object!
error: 0e31469d372551bb2f51a186fa32795e39f94d5c: invalid sha1 pointer in cache-tree
dangling blob 03511c9868b5dbac4ef1343956776ac508c7c2a2
missing blob 8b61d0135d3195966b443f6c73fb68466264c68e
missing blob e89896b1282fbae6cf046bf21b62dd275aaa32f4
dangling blob dd09f7f1f033632b7ef90876d6802f5b5fede79a
missing blob caab8e3d18f2b8c8947f79af7885cdeeeae192fd
missing blob e4cf65ddf80338d50ecd4abcf1caf1de3127c229
ステップ5: 試してみる
git reflog
. HEADが壊れているので失敗。
git reflog
fatal: bad object HEAD
ステップ6:グーグル 検索する これ . reflogの最後の2行を手動で取得します。
tail -n 2 .git/logs/refs/heads/master
f2d4c4868ec7719317a8fce9dc18c4f2e00ede04 9f0abf890b113a287e10d56b66dbab66adc1662d Nathan VanHoudnos <[email protected]> 1347306977 -0400 commit: up to p. 24, including correcting spelling of my name
9f0abf890b113a287e10d56b66dbab66adc1662d af9fc0c5939eee40f6be2ed66381d74ec2be895f Nathan VanHoudnos <[email protected]> 1347358589 -0400 commit: fixed up to page 28
ステップ7: ステップ6で、HEADは現在、一番最後のコミットを指していることがわかったことに注意してください。そこで、親コミットだけを見るようにしてみましょう。
git show 9f0abf890b113a287e10d56b66dbab66adc1662d
commit 9f0abf890b113a287e10d56b66dbab66adc1662d
Author: Nathan VanHoudnos <nathanvan@XXXXXX>
Date: Mon Sep 10 15:56:17 2012 -0400
up to p. 24, including correcting spelling of my name
diff --git a/tex/MCMC-in-IRT.tex b/tex/MCMC-in-IRT.tex
index 86e67a1..b860686 100644
--- a/tex/MCMC-in-IRT.tex
+++ b/tex/MCMC-in-IRT.tex
うまくいった!
ステップ8:それでは、HEADを9f0abf890b113a287e10d56b66dbab66adc1662dに指定する必要があります。
git update-ref HEAD 9f0abf890b113a287e10d56b66dbab66adc1662d
文句を言わなかったのは
ステップ9:fsckが何を言うかを見る。
git fsck --full
Checking object directories: 100% (256/256), done.
error: refs/heads/master.u1conflict does not point to a valid object!
error: 0e31469d372551bb2f51a186fa32795e39f94d5c: invalid sha1 pointer in cache-tree
dangling blob 03511c9868b5dbac4ef1343956776ac508c7c2a2
missing blob 8b61d0135d3195966b443f6c73fb68466264c68e
missing blob e89896b1282fbae6cf046bf21b62dd275aaa32f4
dangling blob dd09f7f1f033632b7ef90876d6802f5b5fede79a
missing blob caab8e3d18f2b8c8947f79af7885cdeeeae192fd
missing blob e4cf65ddf80338d50ecd4abcf1caf1de3127c229
ステップ10 キャッシュツリーの無効なsha1ポインタは、(今は古くなった)インデックスファイルからのもののようでした( ソース ). そこで、それを殺して、リポジトリをリセットしました。
rm .git/index
git reset
Unstaged changes after reset:
M tex/MCMC-in-IRT.tex
M tex/recipe-example/build-example-plots.R
M tex/recipe-example/build-failure-plots.R
ステップ11:もう一度fsckを見てみると・・・。
git fsck --full
Checking object directories: 100% (256/256), done.
error: refs/heads/master.u1conflict does not point to a valid object!
dangling blob 03511c9868b5dbac4ef1343956776ac508c7c2a2
dangling blob dd09f7f1f033632b7ef90876d6802f5b5fede79a
は ダングリングブロブはエラーにならない . master.u1conflictは関係ないし、今は動いているので、もう触りたくないですねー。
ステップ12:ローカルでの編集に追いつく。
git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: tex/MCMC-in-IRT.tex
# modified: tex/recipe-example/build-example-plots.R
# modified: tex/recipe-example/build-failure-plots.R
#
< ... snip ... >
no changes added to commit (use "git add" and/or "git commit -a")
git commit -a -m "recovering from the git fiasco"
[master 7922876] recovering from the git fiasco
3 files changed, 12 insertions(+), 94 deletions(-)
git add tex/sept2012_code/example-code-testing.R
git commit -a -m "adding in the example code"
[master 385c023] adding in the example code
1 file changed, 331 insertions(+)
create mode 100644 tex/sept2012_code/example-code-testing.R
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] Git でブランチからコミットを削除する
-
[解決済み] Git でファイルの一部分のみをコミットする
-
[解決済み] Git リポジトリで削除されたファイルを検索して復元する方法
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】Gitバージョン管理でファイルの変更履歴を見る
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
[解決済み] [email protected] へのいくつかの参考文献のプッシュに失敗しました。
-
[解決済み] [Solved] 作業ツリーのディレクトリ 'example.com' を作成できませんでした。パーミッションが拒否されました
-
[解決済み】Git Push Error: リポジトリデータベースにオブジェクトを追加する権限が不足しています。
-
[解決済み] VSTS Git Fetch Failed with exit code: 128
-
[解決済み] GitのFETCH_HEADとはどういう意味ですか?
-
[解決済み] ssh-keygen' は内部コマンドまたは外部コマンドとして認識されません。
-
[解決済み] Gitのエラー「object file ... is empty」はどうすれば直せますか?
-
[解決済み] Git "破損したルースオブジェクト"
-
[解決済み] Gitでローカルブランチをリモートブランチに完全に置き換えるには?