파일 연결 해제에 실패했습니다. 다시 시도해야합니까?


571

로컬 git 저장소의 파일 중 하나에 문제가 있습니다. 지점을 변경하려고하면 다음과 같이 표시됩니다.

Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)

그게 무슨 뜻이야?



의 중복 가능성 ([힘내있어 리베이스 오류 '파일의 링크 해제 실패'] stackoverflow.com/questions/3698369/... )
조쉬 리를

프로세스 뷰어가 작동하지 않으면 다시 시작한 다음 파일을 제거 할 수 있으며 주어진 파일이 당신을 위해 일한 경우 응답을 수락 할 수 있습니다
dhaval

1
또한 git 프로세스에 해당 파일에 대한 쓰기 권한이 있는지 확인하십시오.
boileau

답변:


751

이것은 다른 프로그램이 파일을 사용하고 있음을 의미하므로 분기를 변경하려고 할 때 git이 작업 디렉토리로 또는 디렉토리에서 "이동"할 수 없습니다.

이클립스가 파일을 "사용"하는 Windows Vista에서 이런 일이 발생했습니다. 파일은 실제로 이클립스에서 열리지 않지만 이클립스에서 실행되는 프로세스에 의해 열렸을 수 있습니다.

이 경우 파일을 사용했을 가능성이있는 응용 프로그램에서 파일을 닫으십시오. 그래도 문제가 해결되지 않으면 파일을 열었던 응용 프로그램을 완전히 종료하십시오.


53
Windows에서 ProcessExplorer를 사용하여 파일을 연 프로세스를 찾으십시오.
Dave C

2
"이 파일을 삭제할 수없는 경우 (예 : 파일이 존재하지 않는 경우) 파일을 건너 뛰십시오"와 같은 스크립트를 작성하는 방법이 있습니까?
2xMax

14
제 경우에는 Visual Studio와 Git 플러그인이었습니다.
Michał Powaga

8
Windows에서 ProcessExplorer를 사용할 수 없거나 다운로드하지 않으려면 (Windows + R) "resmon"을 실행하고 CPU 탭으로 이동하여 "Associated Identifiers"텍스트 상자에서 파일 이름을 검색하십시오.
Raphael

6
GitKrakenrebase와 같은 명령을 수행하면 이것을 사용할 수 있습니다
mtpultz

285

이 문제가 발생하여 다음 명령으로 해결했습니다 git gc . 위 명령은 임시 파일과 불필요한 파일을 제거합니다. (가비지 수집기.)


43
git pullgit gcgc는 자동으로 시작 되었으며 gc는 일부 .pack 및 .inx 파일에 액세스하려고 시도했습니다. 이것들은 git pull명령 을 소유 한 "windows git"프로세스에 의해 유지되었습니다 . git gc보다 수동으로 실행 git pull하면 실제로 문제가 해결됩니다.
니키타

4
실행하는 동안 git gc때 다시 같은 오류를 가지고 gc진행했다
프라 카쉬 K

4
"git gc를 수동으로 실행하는 것보다-git pull이 실제로 문제를 해결합니다." 도움이되었습니다. 니키타 감사합니다.
sangam

이것은 나에게도 도움이되었습니다. Windows에서 Git Bash를 사용하여 실행
Ascalonian

git pull을 시작한 후이 오류가 발생했습니다. Ctrl + C를 눌러 풀을 중지하고 git gc를 실행 한 다음 git pull을 다시 실행하면 문제가 사라지고 풀을 중단하여 아무것도 끊어지지 않았습니다.
다니엘 SP

84

여기 에서이 솔루션은 나를 위해 일했습니다 :

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

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


2
나를 위해 일했다. VS를 관리자로 실행 한 다음 VS에서 명령 프롬프트를 시작했습니다.
Sentinel

3
I : Ctrl+C연결할 수없는 매우 긴 파일 목록을 종료하도록 입력 했습니다. gitbash, 내 IDE 및 GitHub Windows 응용 프로그램을 종료했습니다. 관리자 권한으로 실행 모드에서 gitbash를 다시 시작했습니다. 그리고 달렸다 git gc --aggressive. 완료하는 데 시간이 걸렸지 만 오류없이 완료했습니다.
Mark McClelland

이것이 중복이라고 생각되면 다른 것으로 표시해야합니다.
Liam

2
@Liam이 질문은 더 낡았지만이 답변은 다른 질문에만 있었으며이 질문에 대한 답변이 단 하나도 없기 때문에 하나를 복제본으로 설정하기가 더 어렵습니다.
sepehr

이것은 나를 위해 아주 잘 작동했습니다. 이전 답변은 없습니다. 고마워
Roberto Rodriguez

35

나는이 문제를 겪고있다. git pull .

나는 시도 git gc하고 내 문제를 해결했다.


Windows 컴퓨터 에서이 문제가 발생 했으며이 솔루션은 처음에는 작동하지 않았습니다. 그러나 일단 관리자 명령 프롬프트 에서이 명령을 실행하면 문제가 해결되었습니다.
William W

23

필자의 경우 파일이나 디렉토리를 만지는 프로세스가 없습니다. 운영 체제 제한 (Windows)으로 인해 경로가 매우 긴 경우에 발생할 수 있습니다. 아래 표시된대로 전역 git 구성에서 longpath 지원 플래그를 활성화하십시오.

git config --global core.longpaths true

또는 충돌하지 않는 경우 예 / 아니요 응답 플래그를 설정하십시오.

set GIT_ASK_YESNO=false

경로가 너무 길면 성공적인 해결책을 찾지 못했습니다.


5
왜 그런지 모르겠지만 "git config --global core.longpaths true"를 설정하면 도움이되었습니다.
Maxim

GIT_ASK_YESNO에 대한 정보를 찾을 수 없습니다. 그거 어디서 났어 ?
majkinetor 2016 년

예 : stackoverflow.com/questions/3698369/… 나는 그것이 최신 버전의 git (2.9)에서 작동한다면 안된다
andhdo

core.longpaths추가로 : 리셋 --hard 자두 GC 나를 위해 일한 - 도구에서의 빌드하지 엉망에 가까운 안드로이드 스튜디오에하지만, 한
마이크 bovquier


10

이것은 누군가에게 유용 할 수 있습니다. 위의 모든 방법으로 문제가 해결되지 않으면 다음 단계를 수행하십시오.

  1. IDE (Intellij 및 기타에 적용되는지 확실하지 않은 Eclipse) 또는 git을 사용하는 다른 앱을 닫으십시오.

  2. 커맨드 라인에서 git을 열고 (내 경우에는 git bash가 있음) git gc다른 사람들이 언급 한대로 실행하십시오 .

이것은 나를 위해 마술을했다.


이것은 내 경우에 도움이 된 유일한 답변입니다. Android Studio를 사용하여
0101100101

10

내가 사용으로 gitkraken 및 프롬프트 명령을, 나는 같은 문제 다 퉜다. 그런 다음 실행 git gc 명령을 실행하면 문제가 해결되었습니다. 그래서 나는 행복하고 도움이 될만한 몇 가지 요점을 공유하고 싶습니다.

무엇 git gc을 할 것인가?

git gc git add의 이전 호출에서 생성되었을 수없는 도달 할 수없는 객체를 제거합니다.

실행할 때 git gc 합니까?

에서 문서 , 사용자는 좋은 디스크 공간 활용과 좋은 운영 성능을 유지하기 위해 각 저장소 내에서 정기적으로이 작업을 실행하는 것이 좋습니다.

자동 구성 가능하게하는 방법?

일부 git 명령은 git gc를 자동으로 실행할 수 있습니다. 자세한 내용은 아래 --auto 플래그를 참조하십시오. 당신이하고있는 일을 알고 원하는 것이 더 이상 고려하지 않고이 동작을 영구적으로 비활성화하는 것입니다.

git config --global gc.auto 0

8

필자의 경우 (Win8.1, TortoiseGit 실행 중) 파일을 잠그는 것이 "TortoiseSVN 상태 캐시"라는 프로세스였습니다.

그것을 죽이면 더 이상 아무런 문제없이 "git gc"를 실행할 수있었습니다. 위의 프로세스는 TortoiseGit에 의해 시작되므로 수동으로 다시 시작할 필요가 없습니다.


7

Windows 7에서 이런 종류의 문제가 있었고 고아 git.exe프로세스 로 인한 것으로 나타났습니다 .

이를 해결하려면 작업 관리자를 열고 모두 종료하십시오. git.exe 프로세스를 종료하십시오.

git명령은 수명이 짧기 때문에 일반적으로 git.exe작업 관리자에 아무것도 표시되지 않습니다 . 그들이 거기에있을 때, 그것은 일반적으로 뭔가 잘못되었음을 의미하므로 해당 프로세스를 종료해야합니다.


7

Windows에서이 문제가 발생했습니다. IDE (Android Studio)를 닫고 git shell에서 YES를 선택했습니다. 효과가있었습니다.


5

Windows 8에서 git gc를 실행했으며 git gc가 이미 실행 중이라고 말했으며 git gc --force를 실행하고 가비지 수집기가 실행되었습니다.

그런 다음 지점을 바꾸고 아무런 문제없이 병합 할 수 있습니다 .git gc --force를 사용해보십시오.

아마도 gc 프로세스는 어떤 이유로 든 우아하게 멈추지 않았습니다.


Windows 10에도 유효합니다.
oguzhan

4

폴더의 .tmp파일 에이 문제가 있습니다 /.git/objects/pack. 푸시 또는 풀 중에 실패한 것으로 생각되어 이러한 임시 파일을 제거하고 HEAD를 마지막 커밋으로 재설정했습니다. 이것이 조언되는지 확실하지 않지만 그것은 나를 위해 일했습니다. 또한 pack 폴더에 속하지 않은 파일 git count-objects -v목록을 제공했습니다 .tmp.

또는 Windows에서 y / n 메시지를 억제 git open cmd.exe하고 다음을 실행하십시오.

SETX GIT_ASK_YESNO false

여기에서 본 : https://twitter.com/petercamfield/status/494805475733807104


실행 후 git gc , git count-objects -v에서 임시 객체 남은 식별하는 데 도움이 pack폴더에 있습니다.
mistaecko

4

관리자로 Powershell을 열어서이 문제를 해결할 수 있었습니다. git checkout <branch_name>


@ bar-horing 감사합니다. 이를 통해 권한 문제로 식별 할 수있었습니다. 해당 폴더에 대한 Windows 권한을 수정하면 작동합니다.
Kumar

3

'git pull'을하는 동안 동일한 문제에 직면했습니다. 수동 청소 git 명령 'git gc'를 시도했는데 문제가 해결되었습니다.


4
이 동안 답변의 시도는, 이미 (예 : 다른 답변이 적용되지 않습니다 아무것도 추가하지 않습니다 이 하나 ). 이 솔루션이 작동하는지 확인하거나 해당 답변의 작성자에게 감사를 표하려는 경우 답변을 게시하지 마십시오. 좀 더 명성 을 얻은 후에 는 스택 오버플로 방식으로 감사의 말 을 전할 수있는 충분한 권한 을 얻게됩니다 .
Scott Weldon


2

다양한 솔루션을 시도한 후 마침내 git clean -f도움이되었습니다.

편집 : 나는 다시 몇 번 문제를 겪었다-git에 의존하는 모든 프로세스를 닫으면 도움이되는 것처럼 보인다 (gitbash, Eclipse IDE 등)


2

위에서 언급했듯이 다른 것이 파일을 보유하고 있습니다. 그 프로그램은 우리에게 의심스러워 보이지 않습니다. GitKraken을 연 상태에서 콘솔에서 git pull을 시도했습니다. GitKraken을 닫으면 문제가 해결되었습니다.


2

실행 후 명령

git rm -rf foo.bar

나는 오류를 본다

Unlink of file 'foo.bar' failed. Should I try again? (y/n)

다른 프로그램이이 파일을 사용하고 있기 때문 입니다. 예를 들어 디버그 모델에서 Java 웹 응용 프로그램을 실행하거나 서버에서 웹 응용 프로그램을 실행하면 로그 파일을 삭제할 수 없습니다. 응용 프로그램 서버를 끄거나 디버그 프로세스를 끄고 다시 시도하십시오.

git rm -rf foo.bar

파일이 삭제되었습니다.


1

이것은 git history를 확인하기 위해 실행중인 별도의 gitk 창 일 수 있습니다.

해당 창을 닫아서 문제를 해결하십시오.


1

git Bash와 Eclipse EGit을 동시에 실행하는이 문제가 발생했습니다. 솔루션 : Eclipse를 닫으십시오. git gc@khilo가 언급했듯이 실행에 상처를주지 않을 것 입니다.



1

Windows 에서이 문제가 발생하여 관리자로 git bash를 실행 한 다음 원하는 명령을 수행하여 문제를 해결할 수 있습니다.


1

웹 응용 프로그램을 개발하는 경우 일반적인 원인은 서버 종료를 잊어 버리는 것입니다. 예를 들어 간단한 Node.js 프로세스이거나 Windows의 IIS 프로세스가 백그라운드 프로세스보다 눈에 잘 띄지 않게 실행됩니다.


1

이 페이지의 모든 팁을 시도했지만 아무런 도움이되지 않았습니다. 나는 a git fetch와 a git reset --hard origin/development를 사용하여 unkink 오류를 주었다. 최신 커밋으로 재설정 할 수 없습니다.

도움이 된 것은 다른 지점을 확인한 다음 이전 지점을 확인하는 것입니다. 매우 이상하지만 문제를 해결했습니다.


1

IDE를 닫고 여기에 나열된 다양한 git 명령을 실행해도 도움이되지 않으면 실행중인 모든 Java 프로세스를 수동으로 종료하십시오. 어떻게 든 구성 파일을 열린 상태로 유지하는 Java 프로세스가 일식에서 빠져 나갔습니다.


1

Docker를 사용하고 Windows 10을 실행중인 경우 파일이 실행될 수있는 컨테이너를 중지 할 수 있습니다. 컨테이너의 상태를 표시하려면 다음을 실행하십시오.

docker ps -a

그들을 막으려면 간단히

docker stop <container name or container id>

.sh 파일을 사용하여 로컬 파일을 실행하는 동안 이것은 나를 위해 일했습니다.


1

나를 위해 일하고, 창문에서 시험해 보았습니다.

IDE에서 서버 실행을 중지하거나 IDE를 닫으십시오

Intellij / Ecllipse 또는 기타 작동합니다.


0

Windows에서는이 오류가 git clone상당히 큰 리포지토리에서 발견되었습니다. 청산 SmartGit 및 내 백업 소프트웨어 (CrashPlan)을 일시 정지하고, 그 후 일했다. 둘 중 어느 쪽이 트릭을했는지 확실하지 않지만 둘 중 하나를 실행하면 그렇게 할 수도 있습니다.


0

git pull을 수행하는 동안 동일한 문제가 발생했으며 위에서 언급 한 것처럼 해당 파일을 보유하고 git pull을 허용하지 않는 프로그램 때문이었습니다. 프로그램을 닫는 것이 도움이되었습니다. 일반적으로 파일을 체크인하는 IDE (Eclipse와 같은)는 백그라운드에서 파일을 보유합니다. 동일한 닫고 git pull을 다시 실행하면 문제가 해결되었습니다.


0

나는이 같은 오류가 있었고 파일을 열어 놓은 앱을 닫아서 해결했습니다. 돌아가서 "Y"를 누를 수있었습니다

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