동작 원리 — 포인터와 LFS API 사양
동작 원리 — 포인터와 LFS API 사양
Git LFS가 왜 저장소를 가볍게 유지하는지, 그 원리를 알면 이해가 훨씬 빨라요. 핵심은 큰 파일 대신 텍스트 포인터를 커밋한다는 점입니다.
출처: https://github.com/git-lfs/git-lfs/blob/main/docs/spec.md
포인터 파일
Git에는 큰 파일의 내용이 아니라, "실제 파일은 원격에 있고 이게 그 파일임"을 가리키는 작은 텍스트 포인터가 저장됩니다. 포인터는 파일의 오브젝트 ID(OID)와 크기 같은 메타데이터를 담고 있어요. 실제 내용은 Git LFS 원격 서버에 저장됩니다.
클라이언트·서버 역할
- LFS 클라이언트:
git-lfs명령이 커밋 시 큰 파일을 식별해 원격 서버로 업로드하고, 체크아웃 시 다시 받아옵니다. - LFS 원격 서버: 파일 바이너리를 저장하고, 업로드/다운로드 URL을 리졸브해주는 HTTP API를 제공해요.
API 사양
Git LFS에는 **배치 API(Batch API)**가 있어서, 클라이언트가 한 번의 요청으로 여러 객체의 업로드·다운로드 전송 URL을 한꺼번에 받아올 수 있습니다. docs/api 아래 문서에 이 사양이 정의되어 있어요.
다른 도구 연동
Git LFS를 다른 도구·제품에 통합하려면 API 사양문서(docs/api/README.md)와 레퍼런스 서버 구현(lfs-test-server)을 참고하면 됩니다.
더 알아보기
https://github.com/git-lfs/git-lfs/blob/main/docs/api/README.md— LFS API 사양https://github.com/git-lfs/lfs-test-server— 레퍼런스 서버 구현