답변:
SHA say-810cae53e0f622d6804f063c04a83dbc3a11b7ca가있는 객체 (블롭, 트리 및 커밋)는
.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca
(현재 모든 오브젝트가 동일한 디렉토리에 저장되는 것은 아니므로 파일 시스템의 성능을 향상시키기 위해 처음 두 문자로 분할)
위와 같이 저장된 객체를 느슨한 객체라고합니다.
레포로 시작하면 대부분 느슨한 물건이 있습니다. 숫자가 높을수록 비효율적이며 팩 파일에 저장됩니다. 이러한 객체를 묶음 객체라고합니다.
git gc
객체를 패킹하기 위해 실행하는 것입니다 (보통 필요하지 않고 몇 주 전의 느슨한 객체도 제거되며 --prune=<date>
옵션을 사용하면 더 이상 필요하지 않은 느슨한 객체를 강제로 제거 할 수 있습니다. 커밋을 수정할 때와 동일합니다. 더 오래 필요합니다.)
--prune
옵션은 기본적으로 활성화되어 git gc
있으며 일반적인 사용 (예 :)에 의해 자동으로 트리거 되므로 commit
일반적으로 이에 대해 걱정할 필요가 없습니다. git gui를 사용하지 않고 소스에서 트리거 된 위치를 정확하게 찾을 수 없지만 자체 검사를 수행하거나 gc
호출 된 명령에 의해 트리거 된 것을 가로 챌 수 있습니다. 그러나 정상적인 사용으로 인해 걱정할 필요는 없습니다.
git gc
수동으로 실행 한 후 대규모 프로젝트의 성능이 향상 되었습니까? 느슨한 객체는 비효율적이며 50,000은 매우 많기 때문에 개선해야한다고 생각합니다. 또한 패킹은 .git
폴더가 사용하는 공간을 크게 줄 입니다.
힘내 책은 그것을 잘 설명합니다 : https://git-scm.com/book/en/v2/Git-Internals-Packfiles
느슨한 객체가 더 간단한 형식입니다. 디스크의 단일 파일에 저장된 압축 데이터입니다. 별도의 파일에 기록 된 모든 개체
git gc
멋진 GUI 진행 표시 줄과 함께 실행 됩니다 (대부분 붙어있는 것처럼 보이지만).