변경 사항을 커밋하려고하면 다음 오류가 발생합니다.
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
답변
나는 비슷한 문제가 있었다. 자식 작업 중에 랩톱의 배터리가 부족합니다. 우우.
나는 백업이 없었다. (NB Ubuntu One은 git의 백업 솔루션이 아니며 손상된 저장소로 정상 저장소를 덮어 쓰는 데 도움이됩니다.)
자식 마법사 에게이 문제를 해결하는 나쁜 방법이라면 의견을 남겨주세요. 그러나 그것은 적어도 일시적으로 나를 위해 일했습니다.
1 단계 : .git 백업 (실제로 변경하는 모든 단계 사이에 .git-old-1, .git-old-2 등의 새로운 복사 대상 이름으로 수행) :
cp -a .git .git-old
2 단계 : 실행 git fsck --full
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ 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 단계 : 빈 파일을 제거합니다. 나는 도대체 무엇을 알아 냈다; 어쨌든 그것의 공백.
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ rm .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e
rm: remove write-protected regular empty file `.git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e'? y
3 단계 : git fsck
다시 실행 빈 파일을 계속 삭제하십시오. 디렉토리 cd
로 들어가서 빈 파일을 모두 제거 할 수도 있습니다. 결국 git은 실제로 객체 디렉토리로 무언가를하고 있다고 말하기 시작했습니다..git
find . -type f -empty -delete -print
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ 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
실제로 실행되었습니다.
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ 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
. 내 머리가 부러 졌기 때문에 실패했습니다.
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git reflog
fatal: bad object HEAD
6 단계 : Google 이것을 찾으십시오 . reflog의 마지막 두 줄을 수동으로 가져옵니다.
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ tail -n 2 .git/logs/refs/heads/master
f2d4c4868ec7719317a8fce9dc18c4f2e00ede04 9f0abf890b113a287e10d56b66dbab66adc1662d Nathan VanHoudnos <nathanvan@gmail.com> 1347306977 -0400 commit: up to p. 24, including correcting spelling of my name
9f0abf890b113a287e10d56b66dbab66adc1662d af9fc0c5939eee40f6be2ed66381d74ec2be895f Nathan VanHoudnos <nathanvan@gmail.com> 1347358589 -0400 commit: fixed up to page 28
7 단계 : 6 단계에서 HEAD가 현재 마지막 커밋을 가리키고 있음을 알았습니다. 부모 커밋을 살펴 보자.
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ 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를 가리켜 야합니다.
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git update-ref HEAD 9f0abf890b113a287e10d56b66dbab66adc1662d
불평하지 않았다.
9 단계 : fsck의 내용을 확인하십시오.
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ 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 포인터가 (현재 오래된) 인덱스 파일 ( source ) 에서 온 것 같습니다 . 그래서 나는 그것을 죽이고 repo를 재설정했습니다.
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ rm .git/index
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ 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를 다시보고 …
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ 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 단계 : 로컬 편집 내용 확인 :
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ 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")
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git commit -a -m "recovering from the git fiasco"
[master 7922876] recovering from the git fiasco
3 files changed, 12 insertions(+), 94 deletions(-)
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git add tex/sept2012_code/example-code-testing.R
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ 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
폴더 가 포함 된 git 작업 디렉토리에서 실행 ).
(git 저장소 폴더를 먼저 백업하십시오!)
find .git/objects/ -type f -empty | xargs rm
git fetch -p
git fsck --full
먼저 저장소 전체를 손상시키는 빈 오브젝트 파일 을 제거한 다음 원격 저장소에서 누락 된 오브젝트 (최신 변경 사항) 를 페치 한 다음 전체 오브젝트 저장소 확인 을 수행합니다 . 이 시점에서 오류없이 성공해야합니다 (여전히 경고가있을 수 있습니다!)
추신. 이 답변은 git 저장소의 원격 사본이 어딘가에 있고 (예 : GitHub에서) 깨진 저장소는 원격 저장소에 연결된 로컬 저장소이며 여전히 유효합니다. 그렇지 않은 경우 권장하는 방식으로 수정하지 마십시오.
답변
이 오류는 커밋을 푸시하고 컴퓨터가 멈출 때 발생합니다. 이것이 내가 고친 방법입니다.
해결 단계
git status
비어 있거나 손상된 객체 파일 표시
rm .git/objects/08/3834cb34d155e67a8930604d57d3d302d7ec12
그것을 제거
git status
나는 fatal: bad object HEAD
메시지를 받았다
rm .git/index
index
재설정을 위해를 제거합니다
git reset
치명적 : 개체 ‘HEAD’을 (를) 구문 분석 할 수 없습니다.
git status
git pull
무슨 일이 일어나고 있는지 확인하기 위해
tail -n 2 .git/logs/refs/heads/MY-CURRENT-BRANCH
tail -n 2
로그 분기 의 마지막 두 줄 을 인쇄하여 마지막 2 줄 을 표시합니다.commit hash
git update-ref HEAD 7221fa02cb627470db163826da4265609aba47b2
나는 마지막을 선택 commit hash
git status
파일을 deleted
제거했기 때문에 모든 파일을 표시 .git/index
합니다.
git reset
재설정을 계속
git status
내 수정 사항 확인
참고 : 이 질문에 착륙하고 답변을 참조로 사용하면 단계가 시작됩니다.
답변
git fsck가 감지 한 다양한 빈 파일을 제거한 다음 간단한 git pull을 실행하여이를 해결했습니다.
파일 시스템조차도 fs sane을 유지하기 위해 저널링 및 기타 “트랜잭션”기술을 구현 했으므로 git은 정전이나 장치 공간으로 인해 손상된 상태가 될 수 있습니다 (자체적으로 복구 할 수 없음).
답변
방금 똑같은 문제가 발생했습니다. 원격 저장소를 가져온 후 git 상태를 수행했을 때 “오류 : 객체 파일 (…)이 비어 있습니다” “치명적인 : 느슨한 객체 (…)가 손상되었습니다”
내가 이것을 해결하는 방법은 다음과 같습니다.
- 자식 숨김
- 오류가있는 git 파일 제거 (필요하지 않음)
- 자식 숨김
나는 무슨 일이 일어 났는지 정확히 알지 못하지만 그 지침은 모든 것을 깨끗하게하는 것처럼 보였습니다.
답변
VM을 정기적으로 재부팅해야하므로이 문제는 매우 자주 발생합니다. 그것의 몇 번 후에, 나는 그것이 항상 작동하지만, 이것이 일어날 때마다 @ Nathan-Vanhoudnos가 묘사 한 과정을 반복 할 수 없다는 것을 깨달았습니다. 그런 다음 다음과 같은 더 빠른 솔루션을 찾았습니다.
1 단계
전체 저장소를 다른 폴더로 이동하십시오.
mv current_repo temp_repo
2 단계
리포지를 원점에서 다시 복제하십시오.
git clone source_to_current_repo.git
3 단계
.git 폴더를 제외한 새 저장소 아래의 모든 항목 을 제거하십시오 .
4 단계
.git 폴더를 제외한 모든 것을 temp_repo 에서 새 저장소로 이동 하십시오 .
5 단계
temp_repo를 제거하면 완료됩니다.
몇 번이 지나면이 절차를 매우 빠르게 수행 할 수 있습니다.
답변
- mv 폴더 응용 프로그램 백업, 즉 mv app_folder app_folder_bk ( git stash 와 같습니다 )
- 자식 복제 your_repository
- 드디어,. 병합 도구 (meld diff viewer linux 또는 Winmerge Windows 사용)를 열고 오른쪽 ( app_folder_bk )에서 왼쪽 (new app_folder )으로 변경 사항을 복사하십시오 ( git stash apply 와 같습니다 ).
그게 다야. 어쩌면 그것이 가장 좋은 방법은 아니지만 그렇게 실용적이라고 생각합니다.