programing

파일 연결 해제 실패

powerit 2023. 4. 28. 21:45
반응형

파일 연결 해제 실패

Git Pull을 시도하는 중 다음 오류가 발생합니다.

'lib/xxx.jar' 파일의 링크를 해제하지 못했습니다.다시 해볼까요? (y/n)

선택 여부에 관계없이 당기거나 누를 수 있는 상태에 도달하는 것은 불가능합니다.

가 해당 파일)을 합니다.
(Windows에서는 이러한 프로세스를 추적하는 데 유용합니다.)

프로그램을 시도해 .git pull.

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


2019년 1월 업데이트:

Git 2.21 (2019년 1분기)과 함께, 그것은 훨씬 더 고쳐져야 합니다."git gc그리고 "git repack제거하기 전에 필요하지 않은 열린 팩 파일을 닫지 않았습니다. 이 파일은 열린 파일을 제거할 수 없는 플랫폼에서 작동하지 않았습니다.
수정되었습니다.

요하네스 쉰들린()dscho의 커밋 5bdece0(2018년 12월 15일)을 참조하십시오.
(주니오 C 하마노에 의해 합병되었습니다 -- -- 커밋 5104f8f, 2019년 1월 18일)

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분기 참조).

Johannes Schindelin()dscho의 commit 562102, commit dcacb1b, commit df617b5, commit 0898c96(2016년 1월 13일) 참조.
(주니오 C 하마노에 의해 합병 -- -- 3c80940, 2016년 1월 26일 커밋)

fetch 수집 에 팩 .

자동 gc'하기 전에, 우리는 그들이 재포장되고 쓰레기 수집이 필요할 때를 대비하여 팩 파일이 해제되었는지 확인해야 합니다.

를실행는많코경로드은하"를 실행하는 많은 코드 gc --auto종료하기 전에 팩 파일을 매핑한 상태로 유지하고 파일 설명자를 열어 두었습니다. 이는 열려 있는 파일을 제거할 수 없는 시스템에 친숙하지 않았습니다.
그들은 이제 팩을 닫기 전에 닫습니다.

그것으로 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).

임시 파일 핸들이 하위 프로세스에 의해 상속되지 않는지 확인


사실 위에 언급된 500호는 Git 2.19, 2018년 3분기에 수정되었습니다.
"Git - 파일 연결 해제 및 실패(이 파일에 대한 유일한 프로세스 소유 핸들은 다음과 같습니다.)"을 참조하십시오.

이것은 Windows 관련 답변이므로 귀하와 관련이 없는 것으로 알고 있습니다.저는 단지 미래의 검색자들의 이익을 위해 그것을 포함하는 것입니다.

저의 경우, 상향식이 아닌 명령줄에서 Git를 실행하고 있었기 때문입니다."관리자 권한으로 실행"에서 수정했습니다.

Visual Studio가 풀에서 변경된 모든 파일을 다시 로드하려고 했기 때문입니다.고친 을 합니다.git gc.

을 사용하는 의 GitHub을 실행할 때했습니다.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을 닫은 후 다시는 문제가 발생하지 않았습니다.

이것은 제 경우 Simp에 의해 야기되었습니다.LESS, LESS 컴파일러.시스템 트레이에서 닫아야 합니다.

위의 답변 중 어떤 것도 저에게 효과가 없습니다. 하지만 저는 gitgc 명령을 force 옵션으로 실행했고, 그것은 제 사건을 해결했습니다.

'gitgc --force'

[Windows 7, 관리자 권한으로 실행 => 명령 프롬프트]

문제는 이러한 파일을 처리하는 프로그램이 있기 때문입니다.잠금 해제 기능을 사용하여 이를 처리하는 프로그램을 찾는 것이 좋습니다.

잠금 해제기

Windows XP에서 메시지가 루프에 끼어 있고 응답을 통해 삭제할 수 있는 이러한 현상이 발생했습니다.

Git-GUI를 닫음으로써 루프에 갇힘 발생이 제거되었습니다. (Bash 셸에서 Git merge -i를 실행하고 있었습니다.)

다른 경우에는 저장소에 있는 파일 수가 많아서 발생했을 수 있습니다.주로 .cod 파일에서 발생했으며 나중에 버전 제어에서 제외합니다. (처음에 추적한 이유가 있습니다.)그 원인은 Git가 파일 핸들을 사용하는 속도와 관련이 있을 수 있다고 생각합니다.

이전에 두 개의 포스터에서 Windows에 대해 언급한 적이 있고, 다른 운영 체제에 문제가 있다고 말한 적이 없는 것처럼, 회신으로 해결할 수 있는 문제가 Windows와 관련된 것인지 궁금합니다.

저는 PHPSorm을 열었고, 그것을 닫았고, 모든 것이 잘 되었습니다.

동일한 문제가 발생하여 Windows 작업 관리자에서 관련 프로그램을 모두 닫았습니다.하지만, 그것은 여전히 작동하지 않았습니다.재미있는 부분은 "Git pull"이 아닌 "Git rebase"를 실행했는데 효과가 있었습니다!

관리 모드에서 명령줄 편집기를 실행하고 명령을 실행해 보십시오.그것은 문제를 돕고 해결합니다.:)

저의 경우, 이 문제를 일으키는 태그를 제거하는 오래된 방법이 있었습니다.원본 설정을 해제하여 해결했습니다.

git config --global --unset remote.origin.fetch '\+refs/tags/\*:refs/tags/\*'

그런 다음 서버에서 삭제된 분기를 제거하기 위해 이 항목을 추가합니다.

git config --global fetch.pruneTags true

저는 같은 오류에 직면했고 파일이 사용되고 있을 때 일식을 닫고 다시 당겨서 해결했습니다.

저도 창문에 같은 문제가 있었습니다.Ubuntu VM에서 파일에 액세스하는 동안 Windows에서 gc를 실행하려고 했습니다.Ubuntu의 폐쇄형 터미네이터와 파일 탐색기가 저를 위해 작동했습니다.

언급URL : https://stackoverflow.com/questions/10181057/unlink-of-file-failed

반응형