>개발 도구 >자식 >git pack 파일의 용도는 무엇입니까?

git pack 파일의 용도는 무엇입니까?

WBOY
WBOY원래의
2022-06-30 17:41:487088검색

git에서 팩 파일은 디스크 캐시를 효과적으로 사용할 수 있으며 최근 참조된 개체를 읽기 위한 일반 명령에 대한 액세스 모드를 제공합니다. git은 지정된 여러 개체를 팩 파일(packfile)이라는 바이너리 파일로 압축하여 공간을 절약하고 효율성을 높이는 데 사용됩니다. .

git pack 파일의 용도는 무엇입니까?

이 문서의 운영 환경: Windows 10 시스템, Git 버전 2.30.0, Dell G3 컴퓨터.

git의 팩 파일은 어떤 용도로 사용되나요?

Git의 팩 파일은 디스크 캐시를 효율적으로 사용하고 일반적인 명령과 최근 참조된 개체 읽기에 대한 "좋은" 액세스 패턴을 제공하도록 신중하게 구성되었습니다.

Git의 패키지 파일 형식은 매우 유연합니다(documentation/tech/package-format.txt를 참조하거나 패키지 파일을 Git 커뮤니티 북에 배치하세요).

패킹된 파일은 "삭제 취소"(원본 개체 데이터를 가져와서 압축) 또는 "삭제"(다른 개체에 대해 델타를 형성한 다음 결과 델타 데이터를 압축)의 두 가지 주요 방법으로 개체를 저장합니다.

패킷에 저장된 객체는 임의의 순서로 정렬될 수 있으며(반드시 객체 유형, 객체 이름 또는 기타 속성에 따른 것은 아님) 삭제된 객체는 동일한 유형의 다른 적합한 객체에 대해 만들어질 수 있습니다.

Git의 pack-objects 명령은 일반적인 명령에 대한 탁월한 참조 위치를 제공하는 여러 경험적 방법을 사용합니다.

이러한 휴리스틱은 삭제된 개체에 대한 기본 개체 선택과 개체 순서를 모두 제어합니다.

각 메커니즘은 대부분 독립적이지만 몇 가지 공통 목표를 공유합니다.

Git은 델타 압축 개체의 긴 체인을 형성하지만 휴리스틱은 "오래된" 개체만 긴 체인 끝에 있는지 확인하려고 합니다.

core.deltaBaseCacheLimit는 자동으로 델타 기본 캐시(크기는 구성 변수에 의해 제어됨)를 사용하며 많은 수의 객체를 읽어야 하는 명령(예: git log - 피).

Delta 압축 경험적 일반적인 Git 리포지토리는 많은 수의 개체를 저장하므로 모든 개체를 합리적으로 비교하여 가장 작은 델타 표현을 생성하는 쌍(및 체인)을 찾는 것은 불가능합니다. 델타 베이스 선택 휴리스틱은 파일 이름과 크기가 유사한 개체 중에서 좋은 델타 베이스를 찾을 수 있다는 아이디어를 기반으로 합니다.

각 개체 유형은 별도로 처리됩니다. 즉, 한 유형의 개체는 다른 유형의 개체에 대한 증분 기반으로 사용되지 않습니다.

증분 기수 선택을 위해 개체는 주로 파일 이름과 크기를 기준으로 정렬됩니다. 이 정렬된 목록의 창은 잠재적인 증분 기준으로 간주되는 개체 수를 제한하는 데 사용됩니다.

추가 지식:

.git/objects/pack 파일이 너무 큽니다

개발 과정에서 너무 큰 파일을 업로드했기 때문일 수 있습니다. 삭제되었지만 여전히 git 레코드에 저장되어 있습니다.

해결 방법:

1. 웨어하우스에서 프로젝트를 삭제하고 코드를 다시 제출하세요.

2. 기록을 완전히 삭제합니다

1. 가장 큰 파일 3개를 확인합니다

git verify-pack -v .git/objects/pack/pack-8eaeb...9e.idx | sort -k 3 -n | tail -3
296169a146c50dbc100a5d0ee5be87a45cd7cbb3 blob   50296832 49474116 291684796
 
aae2c1bf6109f2729502349722b4c3402626d755 blob   77762481 77330392 78759794
 
35047899fd3b0dd637b0da2086e7a70fe27b1ccb blob   100534272 100014418 191670176

2. 기록에 있는 모든 트리에서 파일 이름을 쿼리합니다.

git rev-list --objects --all | grep 35047899fd3b0dd637b0da2086e7a70fe27b1ccb
35047899fd3b0dd637b0da2086e7a70fe27b1ccb /wabapi/bulid/master-0.0.1.jar

4. 실행 다음 문장

git filter-branch --index-filter 'git rm --cached --ignore-unmatch  /wabapi/bulid/master-0.0.1.jar'

추천 학습: "

Git Tutorial

"

위 내용은 git pack 파일의 용도는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.