왜 git은 "최적의 성능을 위해 백그라운드에서 저장소 자동 패킹"이라고 계속 말합니까?


100

참고 : 나는 이것이 미묘하게 다른 오류 메시지로 git 을 중단 시키는 비 배경 팩에 대해 말하는 이 질문 의 중복이라고 생각 하지 않습니다 .


내 git 저장소 중 하나에서 (예를 들어) 호출 할 때마다 git fetchgit은 다음을 인쇄합니다.

Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.

git fetch변경 사항이없고 할 일이없는 경우에도 반복적으로 수행하면 매번 인쇄하는 것처럼 보입니다 git fetch. 이것은 나에게 많은 의미가 없습니다. 또한 같은 다른 네트워크 운영, 일어날 것으로 보인다 git pushgit pull.

명령은 더 이상 출력되지 않고 즉시 프롬프트로 돌아오고 내 컴퓨터에서 실행중인 git 프로세스를 찾을 수 없습니다. 이 저장소와이 컴퓨터에서만 발생하는 것 같습니다. git config -l | grep gc아무것도 반환하지 않습니다.

이 문제를 진단하거나 수정하려면 어떻게해야합니까?

$ git --version 
git version 2.0.1

OS X 10.9를 사용하고 있습니다.


연결 한 질문과 동일한 문제처럼 보이지만 중단되지 않을 정도로 빠르게 발생합니다.
Holloway


트 렝곳, 나는 그렇게 생각하지 않는다. 오류 메시지는 미묘하게 다릅니다. "배경"을 언급합니다.
Andrew Ferrier

Trengot, 죄송합니다, 당신이 맞았어요, 그것은 관련이있었습니다 (두 번째 링크). 포인터 주셔서 감사합니다. 자세한 내용은 아래 내 답변을 참조하십시오.
Andrew Ferrier 2015

답변:


167

두 번째 의견 인 Trengot에서 해결책을 찾았습니다. 감사합니다. 나는 몇 가지 매달려있는 얼룩이 있었는데, 그 안에 .git/objects/17있었고 따라서 패킹을 트리거했습니다.

$ git fsck
dangling blob d9ff0aeac4aa8b4e0907daed675ebf60278bc977
dangling blob dbff2d073741f9775c815d4a3c623736af224dad
dangling blob e1ffbab1c5b985cd1cd3bc0281075ea2ed80744a
dangling blob fdff59878ccb3a75689f4acca615cfb635288774

이것은 그들을 정리했습니다.

$ git gc --prune=now

아래 Henrik의 의견에 따라 이것은 약간 위험 할 수 있습니다. 조심해!


19
감사! 이것은 나를 위해 일하는 것 같았습니다. --prune=now조금 위험하다는 것을 알아 두세요. 기본적으로 --prune는 2 주 동안 매달린 Blob을 유지합니다. 즉, 5 분 전에 실수로 잘못된 리베이스를 수행했거나 어제 분기를 제거한 경우 복구 할 수 있습니다. 이 명령을 실행하면 2 주 전이 아니라 지금까지 모든 매달려있는 블로그가 손실됩니다. 또한 다른 터미널에서 다른 Git 명령을 수행하는 동안 절대 실행해서는 안되는 같습니다. 그렇지 않으면 저장소가 손상 될 수 있습니다.
Henrik N

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