development

GIT 오류를 수정하는 방법 : 개체 파일이 비어 있습니까?

big-blog 2020. 2. 21. 22:26
반응형

GIT 오류를 수정하는 방법 : 개체 파일이 비어 있습니까?


변경 사항을 커밋하려고하면 다음 오류가 발생합니다.

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은 실제로 객체 디렉토리로 무언가를하고 있다고 말하기 시작했습니다..gitfind . -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 fsck가 감지 한 다양한 빈 파일을 제거한 다음 간단한 git pull을 실행 하여이 문제를 해결했습니다.

파일 시스템조차도 fs sane을 유지하기 위해 저널링 및 기타 "트랜잭션"기술을 구현 했으므로 git은 정전이나 장치 공간으로 인해 손상된 상태가 될 수 있습니다 (자체적으로 복구 할 수 없음).


이 오류는 커밋을 푸시하고 컴퓨터가 멈출 때 발생합니다. 이것이 내가 고친 방법입니다.


해결 단계

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 상태를 수행했을 때 "오류 : 객체 파일 (...)이 비어 있습니다" "치명적인 : 느슨한 객체 (...)가 손상되었습니다"

내가 이것을 해결하는 방법은 다음과 같습니다.

  1. 자식 숨김
  2. 오류가있는 git 파일 제거 (필요하지 않음)
  3. 자식 숨김

나는 무슨 일이 일어 났는지 정확히 알지 못하지만 그 지침은 모든 것을 깨끗하게하는 것처럼 보였습니다.


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를 제거하면 완료됩니다.

몇 번이 지나면이 절차를 매우 빠르게 수행 할 수 있습니다.


  1. mv 폴더 응용 프로그램 백업, 즉 mv app_folder app_folder_bk ( git stash 와 같습니다 )
  2. 자식 복제 your_repository
  3. 드디어,. 병합 도구 (meld diff viewer linux 또는 Winmerge Windows 사용)를 열고 오른쪽 ( app_folder_bk )에서 왼쪽 (new app_folder )으로 변경 사항을 복사하십시오 ( git stash apply 와 같습니다 ).

그게 다야. 어쩌면 그것이 가장 좋은 방법은 아니지만 그렇게 실용적이라고 생각합니다.


필자의 경우 커밋 메시지를 입력하고 노트북이 꺼 졌기 때문에이 오류가 발생했습니다.

오류를 해결하기 위해 다음 단계를 수행했습니다.

  • git checkout -b backup-branch # 백업 브랜치 생성
  • git reset --hard HEAD~4# 모든 것이 잘 작동하는 커밋으로 재설정하십시오. 필자의 경우 머리에 4 개의 커밋을 백업해야했습니다. 즉, 커밋 메시지를 입력하기 전까지는 머릿속에 있어야합니다. 이 단계를 수행하기 전에 재설정 할 커밋의 해시를 복사하십시오. 제 경우에는 4 개의 마지막 커밋의 해시를 복사했습니다.
  • git cherry-pick <commit-hash> # Cherry는 이전 브랜치에서 새 브랜치로 재설정 된 커밋 (내 경우에는 4 개의 커밋이므로이 단계를 4 번 수행함)을 선택합니다.
  • git push origin backup-branch # 새로운 지점을 밀어서 모든 것이 잘 작동하는지 확인하십시오
  • git branch -D your-branch # 지점을 로컬로 삭제합니다 ( 'your-branch'는 문제가있는 지점입니다)
  • git push origin :your-branch # 리모컨에서 지점 삭제
  • git branch -m backup-branch your-branch # 문제가 발생한 지점의 이름을 갖도록 백업 지점의 이름을 바꿉니다.
  • git push origin your-branch # 새로운 지점을 밀어
  • git push origin :backup-branch # 원격에서 백업 브랜치 삭제

git stash
git checkout master
cd .git/ && find . -type f -empty -delete
git branch your-branch-name -D
git checkout -b your-branch-name
git stash pop

내 문제를 해결


다음은이 문제를 해결하기 위해 정말 간단하고 빠른 방법입니다 경우 당신은 당신이 필요로하는 모든 지점과 커밋과 지역의 repo을, 그리고 새로운 REPO를 작성 (또는 서버의 REPO을 삭제하고 새로운 하나를 만들어 나왔습니다 OK는 경우 그 자리에) :

  1. 서버에서 비어있는 새 저장소를 작성하십시오 (또는 이전 저장소를 삭제하고 대신 새 저장소를 작성하십시오).
  2. 새 사본의 원격 URL을 가리 키도록 로컬 사본의 원격 URL을 변경하십시오.
  3. 로컬 리포지토리의 모든 지점을 새 서버 리포지토리로 푸시하십시오.

이렇게하면 로컬 리포지토리에있는 모든 커밋 기록 및 분기가 유지됩니다.

리포지토리에 공동 작업자가있는 경우 많은 공동 작업자가 로컬 리포지토리의 원격 URL을 변경하고 서버에없는 커밋을 선택적으로 푸시해야한다고 생각합니다.

이 솔루션은 동일한 문제가 발생했을 때 효과적이었습니다. 공동 작업자가 한 명있었습니다. 로컬 리포지토리를 새 원격 리포지토리로 푸시 한 후 원격 리포지토리 URL을 가리 키도록 로컬 리포지토리를 변경하면 모든 것이 제대로 작동했습니다.


모든 관련 변경 사항이 이미 적용된 리모컨이 있다고 가정합니다. 로컬 변경 사항에 신경 쓰지 않고 단순히 큰 리포지토리를 삭제하고 복제하지 않기를 원했습니다. 중요한 로컬 변경 사항이있는 경우 더주의해야합니다.

랩탑이 고장난 후에도 같은 문제가있었습니다. 아마도 그것은 큰 저장소이기 때문에 호출 할 때 한 번에 하나씩 만 손상된 객체 파일이 상당히 많았 기 때문에 git fsck --full작은 쉘 하나의 라이너를 작성하여 그중 하나를 자동으로 삭제했습니다.

$ sudo rm `git fsck --full 2>&1 | grep -oE -m 1 ".git/objects/[0-9a-f]{2}/[0-9a-f]*"`

  • 2>&1 grep 할 수 있도록 오류 메시지를 stdout으로 리디렉션합니다.
  • 사용 된 grep 옵션 :
    • -o 실제로 일치하는 줄의 일부만 반환
    • -E 고급 정규식 사용
    • -m 1 첫 번째 경기 만 반환해야합니다
    • [0-9a-f]{2} 0과 9 사이의 문자와 a와 f 사이에있는 문자 중 하나가 일치하는 경우
    • [0-9a-f]* 0에서 9 사이의 문자 수와 a와 f가 함께 발생합니다.

여전히 한 번에 하나의 파일 만 삭제하므로 다음과 같은 루프에서 파일을 호출 할 수 있습니다.

$ while true; do sudo rm `git fsck --full 2>&1 | grep -oE -m 1 ".git/objects/[0-9a-f]{2}/[0-9a-f]*"`; done

이것의 문제는 더 이상 유용한 것을 출력하지 않으므로 완료 시점을 알 수 없다는 것입니다 (시간이 지나면 유용한 것을해서는 안됩니다)

이것을 "수정"하기 위해 git fsck --full각 라운드 후에 다음과 같이 호출을 추가했습니다 .$ while true; do sudo rm `git fsck --full 2>&1 | grep -oE -m 1 ".git/objects/[0-9a-f]{2}/[0-9a-f]*"`; git fsck --full; done

이제는 절반 정도 빠르지 만 "상태"로 출력합니다.

이 나는 점에이 글의 제안을 일부 놀았 마침내 도착 후 어디 수 git stashgit stash drop깨진 물건을 많이.

첫 번째 문제 해결

그 후에도 여전히 다음과 같은 문제 unable to resolve reference 'refs/remotes/origin/$branch': reference broken가있었습니다.$ rm \repo.git\refs\remotes\origin\$branch

$ git fetch

그런 다음 $ git gc --prune=now

$ git remote prune origin

좋은 측정과

git reflog expire --stale-fix --all

error: HEAD: invalid reflog entry $blubb실행할 때 제거하십시오 git fsck --full.


같은 문제가 발생하여 매우 간단한 방법으로 문제를 해결합니다. 누락 된 파일이 팀원의 컴퓨터에있는 것으로 나타났습니다.

나는 그 파일 들을 git 서버 에 하나씩 복사 했고 (총 9 개의 파일) 문제를 해결했다.


간단하게 갑시다. 소스를 원격 git repo에 업로드 한 경우에만

  1. .git 백업
  2. 자식 확인

    git fsck --full
    
  3. 빈 객체 파일 제거 (모두)

    rm .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e
    
  4. 자식을 다시 확인하십시오.

    git fsck --full
    
  5. 원격 자식에서 소스를 당겨

    git pull origin master
    

내 동료들과 나는이 같은 문제로 여러 번 교차했으며 그것을 해결하기 위해 아래에서 설명하는 단계를 간단히 수행합니다. 가장 우아한 솔루션은 아니지만 데이터 손실없이 작동합니다.

  1. 현재 작업 디렉토리의 이름을 바꾸십시오. ( old_project이 예에서는).
  2. 을 사용하여 새 디렉토리 내에서 저장소를 복제하십시오 git clone.
  3. 명령 행에서 작업 디렉토리를 새로 작성된 프로젝트로 변경하고 작업중인 브랜치로 전환하십시오.
  4. 디렉토리를 old_project제외한 모든 파일과 디렉토리 .git를 새로 작성된 프로젝트 디렉토리에 복사하십시오 .
  5. 작업 트리 상태를 확인하고 (예상보다 많은 변경 사항이 있음) 변경 사항을 커밋하십시오.

도움이되기를 바랍니다 ...


.git가 포함 된 폴더에있는 모든 것을 백업에 복사 한 다음 모든 것을 삭제하고 다시 시작하십시오. git remote를 편리하게 사용하십시오.

git remote -v
 origin git@github.com:rwldrn/idiomatic.js.git (fetch)
 origin git@github.com:rwldrn/idiomatic.js.git (push)

그때

mkdir mygitfolder.backup
cp mygitfolder/* mygitfolder.backup/
cd mygitfolder
rm -r * .git*
git init
git remote add origin git@github.com:rwldrn/idiomatic.js.git

그런 다음 새 파일을 수동으로 병합하고 컴퓨터 전원을 켜 두십시오.


클린 브랜치에서 마스터를 체크 아웃 한 후에도 같은 문제가있었습니다. 잠시 후 나는 마스터에서 많은 수정 된 파일을 인식했습니다. 깨끗한 지점에서 전환 한 후 왜 그들이 거기에 있었는지 모르겠습니다. 어쨌든 수정 된 파일이 이해가되지 않기 때문에 파일을 숨기고 오류가 사라졌습니다.

git:(master) git stash


변경 사항이 있으면 커밋하고 git reset --hard


OLD 백업이 있고 급한 경우 :

현재의 git-broken 프로젝트 경로를 새로 백업하십시오.

  1. .git휴지통으로 이동 (삭제하지 않음)
  2. .gitOLD 백업에서 복사
  3. git pull (병합 충돌을 일으킴)
  4. 모든 소스 (git에 넣은 모든 것)를 휴지통으로 옮기십시오 : ./src(삭제하지 마십시오)
  5. . 새로운 백업에서 모든 소스 (git에 넣은 모든 것)를 복사하십시오.
  6. 의 모든 "병합"을 수락하고 git gui밀고 ... 박수를칩니다!

위에서 다룬 12 단계 솔루션은 용지 걸림을 해결하는 데 도움이되었습니다. 감사. 핵심 단계는 다음과 같습니다.

git fsck --full 

빈 개체를 모두 제거하십시오.

rm .git/objects/...

그런 다음 flog의 두 줄을 가져옵니다.

tail -n 2 .git/logs/refs/heads/master

반환 값으로

git update-ref HEAD ...

이 시점에서 더 이상 오류가 없으므로 가장 최근 파일을 백업했습니다. 그런 다음 git pull과 git push를 차례로 수행하십시오. 백업을 내 git 저장소 파일에 복사하고 다른 git push를 수행했습니다. 그것은 나를 최신 상태로 만들었다.


다음은 github.com의 공개 리포지토리가 작동하지만 로컬 리포지토리가 손상된 경우 문제를 해결하는 방법입니다. 로컬 리포지토리에서 수행 한 커밋을 모두 해제합니다.

좋아, 로컬에 하나의 object empty error리포지토리가 있고 github.com에 동일한 리포지토리가 있지만이 오류는 없습니다. 그래서 내가 단순히 한 일은 github에서 작동하는 저장소를 복제 한 다음 손상된 저장소 (.git 폴더 제외)의 모든 것을 복사하고 작동중인 복제 된 저장소에 붙여 넣는 것입니다.

이것은 로컬 커밋을 삭제하기 때문에 실용적인 해결책이 아닐 수 있지만 코드와 복구 된 버전 제어는 유지 관리합니다.

이 방법을 적용하기 전에 백업해야합니다.


내 자식 오류를 수정했습니다. 개체 파일이 비어 있습니다.

  1. 마지막으로 성공적으로 커밋 / 푸시 한 이후 편집 한 모든 파일의 사본을 저장합니다.
  2. 리포지토리 제거 및 다시 복제
  3. 이전 파일을 편집 한 파일로 바꿉니다.

이것이 도움이되기를 바랍니다.


역사적 커밋을 유지하는 데 신경 쓰지 않는다면 실행하십시오.

rm -r .git

그런 다음 쓰기 방지 된 파일 삭제에 대한 질문에 예라고 대답하십시오. 1 분 안에 문제가 해결되었습니다.

참고 URL : https://stackoverflow.com/questions/11706215/how-to-fix-git-error-object-file-is-empty



반응형