Programming

파일 연결 해제 실패

procodes 2020. 5. 29. 23:11
반응형

파일 연결 해제 실패


git pull을 시도하고 있는데 다음과 같은 오류가 발생합니다.

'lib / xxx.jar'파일 연결 해제에 실패했습니다. 다시 시도해야합니까? (y / n)

y 또는 n을 선택하더라도 당기거나 밀 수있는 상태에 도달 할 수 없습니다.


그것은 일반적으로 프로세스가 여전히 특정 파일을 사용하고 있음을 의미합니다 (여전히 처리하고 있음)
(Windows에서는 ProcessExplorer해당 프로세스를 추적하는 데 능숙합니다)

다른 프로그램을 닫고 다시 시도하십시오 git pull.

GIT_ASK_YESNO변수에 대한 대안이 있습니다 .


2019 년 1 월 업데이트 :

Git 2.21 (2019 년 1 분기)에서는 " git gc"및 " git repack"가 필요없는 것으로 확인 된 열린 팩 파일을 닫지 않았으므로 열린 파일을 제거 할 수없는 플랫폼에서는 작동하지 않았기 때문에 훨씬 더 수정되어야 합니다.
이것은 수정되었습니다.

Johannes Schindelin ( )의 commit 5bdece0 (2018 년 12 월 15 일)을 참조하십시오 . ( Junio ​​C Hamano의해 병합 -- 커밋 5104f8f , 2019 년 1 월 18 일)dscho
gitster

gc/ repack: 필요할 때 릴리즈 팩

Windows에서 프로세스가 보유한 핸들이 여전히 있으면 파일을 제거하거나 이름을 바꿀 수 없습니다.
이를 해결하기 위해 close_all_packs()함수를 소개했습니다 .

더 이상 필요없는 팩을 제거하려는 git gc경우에 대비 하여 팩이 출시되기 직전에 릴리스되었습니다 gc.

그러나이 개발자 gc--aggressive옵션을 통해 모든 팩을 통합 할 때와 같이 팩을 버려야한다는 점을 잊었습니다 .

마찬가지로 git repack -d더 이상 사용되지 않는 팩을 삭제하려고하므로 모든 팩 핸들도 닫아야합니다.


2016 년 1 월 업데이트

Git 2.8 (2016 년 3 월)에서 수정되어야합니다 (아래 Git 2.19, 2018 년 3 분기 참조).

참조 d562102 커밋 , dcacb1b 커밋 , df617b5 커밋 , 0898c96 커밋 에 의해 (2016년 1월 13일) 요하네스 Schindelin을 ( dscho) .
(가 합병 - Junio C 하마노 gitster-3c80940 커밋 2016 26 일월)

fetch: 가비지 수집 전 릴리스 팩 파일

자동 gc'ing하기 전에 팩 파일을 다시 포장하고 가비지 수집해야 할 경우를 대비하여 팩 파일이 릴리스되었는지 확인해야합니다.

gc --auto종료하기 전에 " " 를 실행하는 많은 코드 경로는 유지 된 팩 파일을 매핑하고 파일 디스크립터를 열어 두었습니다. 열려있는 파일을 제거 할 수없는 시스템에는 적합하지 않았습니다.
이제 팩을 닫고 닫습니다.

git-for-widows문제 500을 해결 합니다.

새로운 접근 방식을 검증하는 데 사용테스트를 살펴보면 Git 2.8이 아직 나오지 않았기 때문에 가능한 해결 방법은 인위적으로 올리는 것 gc.autoPackLimit입니다.

git config gc.autoPackLimit 10000
git fetch
git config gc.autoPackLimit 50 # default value

git 2.8.4 (2016 년 6 월) 에는 문제 755언급 하여 문제를 완화해야합니다 ( commit 2db0641 ).

자식 프로세스가 임시 파일 핸들을 상속받지 않도록하십시오


실제로, 위에서 언급 한 git-for-windows문제 500 은 Git 2.19, Q3 2018에서 실제로 수정되었습니다.
" Git-파일 연결 해제 .idx.pack실패 (이 파일에 대한 유일한 프로세스 소유 핸들은 git.exe) "를 참조하십시오.


이것은 Windows 고유의 답변이므로 귀하와 관련이 없다는 것을 알고 있습니다 ... 향후 검색 자의 이익을 위해 포함하고 있습니다.

내 경우에는 높이 지 않은 명령 줄에서 Git을 실행했기 때문입니다. "관리자 권한으로 실행"이 해결되었습니다.


저에게는 Visual Studio가 변경된 모든 파일을 가져 오기에서 다시로드하려고했기 때문입니다. Visual Studio를 새로 고친 다음를 실행하십시오 git gc.


Windows 용 GitHub를 사용하는 Windows에서 실행할 때 쉘에 비슷한 오류가 발생했습니다 git gc.

Unlink of file '.git/objects/pack/pack-0b40ae7eae9b83edac62e19c07ff7b4c175244f6.idx' failed. Should I try again? (y/n)

GitHub GUI를 닫아서 해결했습니다.


일부 파일이 잠겨있을 수 있으므로 Apache 또는 다른 웹 서버를 다시 시작하십시오.


Visual Studio 및 Rubymine을 닫았으며 오류가 다시 발생하지 않았습니다. 그들 중 하나는 범인이었습니다.


IDE를 닫은 다음 수행하십시오 git pull. 작동합니다.


나는이 문제도 가지고 있지만 UE를 사용하여 일식 작업 공간을 구성하고 편집하기 때문에 그것이 UltraEdit이라는 것을 알았습니다.

UE가 특정 파일의 이전 버전을 처리했기 때문에 Git이 링크를 해제 할 수 없었습니다.

UltraEdit을 닫은 후에도 문제가 다시 발생하지 않습니다.


이것은 필자의 경우 LESS 컴파일러 인 SimpLESS에 의해 발생했습니다. 시스템 트레이에서 파일을 닫아야합니다.


문제는 이러한 파일을 처리하는 프로그램이 있기 때문입니다. Unlocker를 사용하여 처리하는 프로그램을 찾아야한다고 제안합니다.

언 락커


메시지가 루프에 갇혀 있고 회신하여 지울 수있는 Windows XP 에서이 문제가 발생했습니다.

Git-GUI를 닫으면 루프에서 멈춤 현상이 해결되었습니다. (bash 쉘에서 git merge -i를 실행 중이었습니다.)

The other occurences happened possibly due to the large number of files in my repository. It happened mainly with .cod files, which I later exclude from version control. (I do have a reason for intially tracking them.) I believe the cause might be related to the rate at which Git uses file handles.

I wonder if the able-to-be-cleared-by-replying problem is Windows related, as two previous posters have mentioned Windows, and no one has said they have the problem with other operating systems.


I had PHPStorm open, closed that and all was well.


I had the same issue and I closed all the related programs from Window Task Manager. However, it was still not working. The interesting part is that I ran "Git rebase" instead of "Git pull" and it worked!


None of the above answers ain't work for me, but I run git gc command with force option, and it solved my case.

'git gc --force'

[Windows 7, Run As Administrator => Command Prompt]

참고URL : https://stackoverflow.com/questions/10181057/unlink-of-file-failed

반응형