source

git-gc를 얼마나 자주 사용해야 합니까?

manysource 2023. 7. 9. 11:16

git-gc를 얼마나 자주 사용해야 합니까?

git-gc를 얼마나 자주 사용해야 합니까?

설명서 페이지에는 다음과 같이 나와 있습니다.

사용자는 각 리포지토리 내에서 이 작업을 정기적으로 실행하여 디스크 공간 활용률과 운영 성능을 유지하는 것이 좋습니다.

gc 시간인지 확인하기 위해 개체 수를 가져오는 명령이 있습니까?

이는 대부분 리포지토리의 사용량에 따라 다릅니다.한 사용자가 하루에 한 번 체크인하고 일주일에 한 번 지점/병합/등 작업을 수행하면 1년에 한 번 이상 실행할 필요가 없을 수 있습니다.

수십 명의 개발자가 하루에 2-3번씩 체크인하는 수십 개의 프로젝트를 수행하므로 매일 밤 실행하는 것이 좋습니다.

하지만 필요 이상으로 자주 실행하는 것은 나쁘지 않을 것입니다.

지금 실행하고 일주일 후에 디스크 사용률을 측정하고 다시 실행한 후 디스크 사용률을 다시 측정합니다.크기가 5% 감소하면 일주일에 한 번 실행합니다.더 떨어지면 더 자주 실행합니다.더 적게 떨어지면 덜 자주 실행합니다.

가비지 수집의 단점은 가비지가 수집된다는 것입니다.우리 모두가 컴퓨터 사용자로서 알고 있듯이, 우리가 지금 쓰레기라고 생각하는 파일들은 미래에 3일 동안 매우 가치 있는 것으로 밝혀질 수 있습니다.Git가 대부분의 잔해를 보관하고 있다는 사실은 여러 번 제 베이컨을 구했습니다. 매달리는 모든 커밋을 탐색함으로써 저는 실수로 캔에 넣은 많은 작업을 복구했습니다.

그러니 개인 복제품에 너무 신경 쓰지 마세요.그럴 필요가 거의 없습니다.

OTOH, 데이터 복구 기능의 가치는 주로 원격으로 사용되는 저장소(예: 모든 개발자가 이동하거나 이동하는 위치)에 대해서는 의문이 제기됩니다.거기서 GC 주행과 재포장을 자주 시작하는 것이 현명할 수 있습니다.

최근 버전의 git은 필요할 때 자동으로 실행되므로 아무것도 할 필요가 없습니다.mangit-gc(1)의 옵션 섹션을 참조하십시오. "일부 git 명령은 많은 느슨한 개체를 만들 수 있는 작업을 수행한 후 gitgc --auto를 실행합니다."

깃구이를 사용하는 경우 다음과 같은 문제가 발생할 수 있습니다.

This repository currently has approximately 1500 loose objects.

다음 명령을 사용하면 비슷한 숫자가 표시됩니다.

$ git count-objects

하지만, 출처에서, 깃귀는 실제로 무언가를 세면서 스스로 계산을 할 것입니다..git/objects 그리고 tcl그것을 제대로 읽으려면!)

어쨌든, 그것은 300개 정도의 느슨한 물체들의 임의의 숫자에 근거하여 경고를 주는 것으로 보입니다.

매일 밤(오후?) 잠잘 때 실행되는 cron 작업에 놓습니다.

새로운 (Git 2.0 2014년 2분기) 설정으로 중단 없이 수행할 수 있습니다.

커밋 4c4ac4d 및 커밋 9f673f9(Nguyễn Thai Ngọc Duy, apclouds) 참조:

gc --auto시간이 걸리고 사용자를 일시적으로 차단할 수 있습니다.
이를 지원하는 시스템에서 백그라운드로 실행되도록 합니다.
백그라운드에서 실행하면 인쇄물만 손실됩니다.그렇지만gc output별로 흥미롭지 않습니다.
변경하여 전경에 유지할 수 있습니다.gc.autodetach.


그 2.0 릴리스 이후로 버그가 있었습니다: git 2.7 (2015년 4분기)은 오류 메시지를 잃지 않을 것입니다.
Nguyọn Thai Ngễc Duy()pcloudscommit 329e6e8(2015년 9월 19일)을 참조하십시오.
(주니오 C 하마노에 의해 합병 -- 076c827, 2015년 10월 15일 커밋)

gc 데몬된에서 gc --auto합니다.

9f673f9를 커밋하는 동안(gc를 실행하기 --auto background - 데 도움이 됩니다.gc --auto단말기를 독차지하면 또 다른 문제가 생깁니다.

에 나온, 세서가최장것은근의서, 의결로과데몬화이트에▁is,서▁the,stderr가 닫히고 모든 경고가 손실됩니다.의 에 있는 이 .cmd_gc()사용자에게 "을 피하는 방법"을 알려주기 때문에 특히 중요합니다.gc --auto연거푸 달리는
stderr이 닫혀있기 때문에 사용자는 알지 못하며, 자연스럽게 그들은 '에 대해 불평합니다.gc --autoCPU 낭비 중

Daemonized는 이제
저장됩니다. 사용자가 제거할 때까지 Following은 실행되지 않고 인쇄됩니다.

나는 큰 체크아웃을 한 후 gitgc를 사용하고, 새로운 물건이 많습니다.공간을 절약할 수 있습니다.예를 들어 git-svn을 사용하여 큰 SVN 프로젝트를 체크아웃하고 gitgc를 수행하면 일반적으로 많은 공간을 절약할 수 있습니다.

이 인용문은 Git를 사용한 버전 제어에서 가져온 것입니다.

Git는 가비지 수집을 자동으로 실행합니다.

리포지토리에 느슨한 개체가 너무 많은 경우

원격 리포지토리에 푸시가 발생하는 경우

많은 느슨한 개체가 발생할 수 있는 일부 명령 후

gitreflog와 같은 일부 명령이 만료되면 이를 명시적으로 요청합니다.

마지막으로 gitgc 명령을 사용하여 명시적으로 요청할 때 가비지 수집이 발생합니다.하지만 언제가 되어야 할까요?이 질문에 대한 확실한 답은 없지만 몇 가지 좋은 조언과 모범 사례가 있습니다.

다음과 같은 몇 가지 경우 gitgc를 수동으로 실행하는 것을 고려해야 합니다.

Git filter-branch를 방금 완료한 경우 필터-branch는 많은 커밋을 다시 작성하고 새 커밋을 도입하며 결과가 만족스러울 때 제거해야 하는 ref에 오래된 커밋을 남겨둡니다.가비지 수집을 통해 모든 죽은 개체(그 개체를 참조하는 개체를 방금 제거했기 때문에 더 이상 참조되지 않음)를 제거해야 합니다.

일부 명령 후에는 느슨한 개체가 많이 발생할 수 있습니다.예를 들어, 이 작업은 큰 기본 재배치 작업일 수 있습니다.

반면에, 쓰레기 수거는 언제 경계해야 할까요?

고아 참조가 있는 경우 복구할 수 있습니다.

기타레의 맥락에서, 그리고 당신은 해상도를 영원히 저장할 필요가 없습니다.

태그와 분기만 있으면 Git가 커밋을 영구적으로 유지할 수 있습니다.

FETCH_HEAD 검색(gitfetch를 통한 URL 직접 검색)의 경우 가비지 수집의 영향을 즉시 받기 때문입니다.

저는 큰 약속을 할 때, 무엇보다도 저장소에서 더 많은 파일을 제거할 때 사용합니다.그 후, 커밋이 더 빠릅니다.

사용할 필요가 없습니다.git gc매우 자주, 왜냐하면git gc(가비지 수집)은 자주 사용되는 몇 가지 명령에서 자동으로 실행됩니다.

git pull
git merge
git rebase
git commit

출처: gitgc 모범 사례FAQS

언급URL : https://stackoverflow.com/questions/55729/how-often-should-you-use-git-gc