Git 리포지토리에서 파일을 제거하지 못했습니다. 새 백업을 만들 수 없습니다.


116

다음을 실행하여 원격 저장소에서 파일을 제거하려고했습니다.

git filter-branch --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD

하지만 힘내는 불평

새 백업을 생성 할 수 없습니다. 이전 백업이 이미 refs / original /에 있습니다.
-f로 백업을 강제 덮어 씁니다.
rm : 제거 할 수 없습니다. /.git-rewrite/backup-refs : 권한이 거부되었습니다.
rm : 디렉터리를 제거 할 수 없습니다. /.git-rewrite : 디렉터리가 비어 있지 않습니다.

이것은 Windows에서 .git-rewrite 디렉토리를 이미 삭제 한 후입니다.

해당 파일을 어떻게 제거 할 수 있습니까? 내 저장소에있는 29Mb 파일이므로 파일을 제거해야합니다.

에서 커밋을 삭제하려고했지만 git rebase -i커밋이 많은 다른 파일에 영향을 주었기 때문에 Git이 충돌을 호소하고 안전을 위해 중단했습니다.


1
검색 엔진의 경우 : 오류 메시지가 인 경우에도 적용될 수 있습니다 .git-rewrite already exists, please remove it.
— Drew Noakes 2015-06-19

답변:


219

이미 필터 분기 작업을 수행했습니다. 필터 브랜치 후에 Git은 무언가 잘못 될 경우를 대비하여 이전 커밋에 대한 참조를 유지합니다.

에서 찾을 수 있습니다 .git/refs/original/…. 해당 디렉토리와 그 안의 모든 파일 -f을 삭제 하거나 플래그를 사용하여 Git이 이전 참조를 삭제하도록합니다.

git filter-branch -f \
--index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD

10
마침내 작동하게되었습니다. 감사합니다! -f 플래그를 시도했지만 문제는 명령 끝에 넣는 것입니다. 머리 -f. 당신의 명령을보고 처음에 깃발을 꽂아 보았습니다. = D
— Cardin 2011 년

12
옵션 플래그 ( -f)는 참조 ( ) 앞에옵니다 HEAD. refs go last
— knittl 2011-06-20

-f를 추가하고 디렉토리를 삭제 한 후에도 동일한 오류가 발생합니다. 어떤 아이디어?
— Yaron

1
@knittl, 나는 git add. .git/refs/original/폴더를 삭제 -f하고 git filter-branch명령에 플래그를 사용한 후에도 원본 포스터와 동일한 오류가 발생했습니다 . 제 경우 해결책은 .git/packed-refs파일 을 삭제하는 것 입니다.
— Yaron

1
@knittl, 해결 방법을 찾았지만 문제가 무엇인지 찾지 못했습니다. 기본적으로 --ignore-unmatch명령을 추가 git rm했고 순조롭게 진행되었습니다!
— Gabrielius 2015

21

이 명령을 사용하여 원본 백업을 제거하십시오.

git update-ref -d refs/original/refs/heads/master

다음은 내 자식 저장소를 필터링하는 데 사용한 요점입니다. https://gist.github.com/k06a/25a0214c98bc19fd6817


이것이 백업을 제거하는 올바른 솔루션입니다! 삭제 .git/refs/original/해도 문제가 해결되지 않습니다.
— Erik Koopmans

'개발'내 경우에 ... 당신은 수정을 시도하는 지점에 마스터를 변경해야합니다
— 데미안 그린

git show-ref | awk '/ refs.original.refs/{print$2}'저장소에있는 모든 백업을 찾으려면
— Dan

4

나는 같은 문제가 있었고 위의 대답은 그것을 고치지 못했습니다. .git / refs / original / 디렉토리가 남아 있지 않습니다. 나를위한 해결책은 .git / packed-refs 파일을 삭제하는 것이 었습니다.


같은 문제입니다. 아니 .git/packed-refs파일, 그러나없이 폴더 original에서 .git/refs. 누군가?
— XedinUnknown

명령에 플래그를 추가하여 여기서 해결 되었습니다-r .
— XedinUnknown 2015-06-25

여기에도 같은 문제가 있습니다. 압축 참조를 삭제하면 문제가 해결되었지만 나머지 git 디렉토리도 망가졌고 백업에서 복원해야했습니다.
— Kevin Yin

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.