Featured image of post [Git] 33. git bisect — 버그 커밋 이분 탐색

[Git] 33. git bisect — 버그 커밋 이분 탐색

git bisect가 이분 탐색으로 버그를 처음 만든 커밋을 O(log n) 번의 테스트만으로 찾아내는 원리, good/bad로 범위를 좁히는 절차, 테스트 스크립트를 연결해 전 과정을 자동화하는 run 옵션을 정리한 Git 6부 마무리 챕터다.

Featured image of post [Git] 34. Git 객체 모델 — blob/tree/commit

[Git] 34. Git 객체 모델 — blob/tree/commit

Git이 .git/objects에 blob·tree·commit 세 가지 객체로 스냅샷을 저장하는 원리, 각 객체가 SHA-1 해시로 식별되고 내용이 같으면 저장 공간을 공유하는 이유, git cat-file로 실제 객체 내용을 직접 들여다보는 법을 정리한 Git 7부 첫 챕터다.

Featured image of post [Git] 35. Git refs와 HEAD

[Git] 35. Git refs와 HEAD

브랜치·태그·HEAD가 모두 커밋 해시를 가리키는 참조(ref)일 뿐이라는 통일된 모델, HEAD가 브랜치를 가리키는 상태와 커밋을 직접 가리키는 detached 상태의 차이, symbolic-ref로 참조 구조를 직접 들여다보는 법을 정리한 Git 챕터다.

Featured image of post [Git] 36. Packfile과 git gc

[Git] 36. Packfile과 git gc

34장에서 다룬 개별(loose) 객체가 늘어나면 git gc가 이를 델타 압축된 packfile 하나로 묶어 저장 효율을 높이는 원리, unreachable 객체가 정리되는 기준과 유예 기간, 7부를 마무리하며 지금까지의 내부 구조를 종합하는 챕터다.

Featured image of post [Git] 37. Git submodule

[Git] 37. Git submodule

Git submodule이 한 저장소 안에 다른 저장소를 특정 커밋 단위로 포함시키는 원리, 11장에서 경고했던 중첩 저장소 문제의 정식 해결책인 이유, clone 후 --recurse-submodules가 필요한 이유를 정리한 Git 8부 첫 챕터다.

Featured image of post [Git] 38. Git worktree

[Git] 38. Git worktree

git worktree가 하나의 .git 저장소를 공유하면서 여러 브랜치를 서로 다른 디렉터리에 동시에 체크아웃하는 원리, 브랜치 전환 없이 병렬 작업이 가능한 이유, stash 없이 급한 작업을 처리하는 대안 시나리오를 정리한 Git 챕터다.

Featured image of post [Git] 39. Git hooks

[Git] 39. Git hooks

Git hooks가 커밋·push 같은 특정 시점에 자동으로 스크립트를 실행하는 원리, .git/hooks의 샘플 파일을 실제 스크립트로 바꾸는 법, pre-commit·commit-msg 같은 대표 훅과 훅이 기본적으로 공유되지 않는 이유를 정리한 Git 챕터다.

Featured image of post [Git] 40. .gitattributes

[Git] 40. .gitattributes

.gitattributes가 파일 경로별로 Git의 동작(줄바꿈 정규화, diff 방식, 언어 통계 제외)을 세밀하게 지정하는 원리, 02장에서 다룬 core.autocrlf보다 이 파일이 우선되는 이유, linguist-generated로 자동 생성 코드를 리뷰에서 제외하는 법을 정리한 Git 챕터다.

Featured image of post [Git] 41. Git LFS(Large File Storage)

[Git] 41. Git LFS(Large File Storage)

Git LFS가 대용량 바이너리 파일을 저장소 히스토리 대신 포인터 파일로 대체해 저장하는 원리, 34장의 blob 방식이 대용량 파일마다 전체 clone 크기를 부풀리는 근본 문제, .gitattributes와 연동해 특정 확장자를 자동으로 LFS 대상으로 지정하는 법을 정리한 Git 8부 마무리 챕터다.

Featured image of post [Git] 42. 대용량 저장소 관리 — shallow clone과 filter-repo

[Git] 42. 대용량 저장소 관리 — shallow clone과 filter-repo

18장에서 다룬 shallow clone을 CI 환경에서 실전 활용하는 법, 실수로 커밋된 민감 정보·대용량 파일을 히스토리 전체에서 제거하는 git filter-repo 절차, 36장의 gc·41장의 LFS와 연결되는 저장소 크기 관리 전략을 정리한 Git 9부 첫 챕터다.