Featured image of post [Git] 31. git add -p — 부분 스테이징

[Git] 31. git add -p — 부분 스테이징

git add -p가 파일 하나를 hunk 단위로 쪼개 일부 변경만 선택적으로 스테이징하는 원리, 대화형 프롬프트의 각 명령(y/n/s/e) 의미, 한 파일에 섞인 서로 다른 목적의 수정을 커밋 단위로 분리하는 실전 절차를 정리한 Git 챕터다.

Featured image of post [Git] 32. git blame — 변경 이력 추적

[Git] 32. git blame — 변경 이력 추적

git blame이 파일의 각 줄을 마지막으로 수정한 커밋·작성자·날짜로 연결하는 원리, 이름 변경을 넘어 추적하는 -C/-M 옵션, 대량 서식 변경 커밋을 건너뛰는 ignore-revs 파일 설정을 정리한 Git 챕터다.

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 챕터다.