/
https://42jerrykim.github.io/ _index.md
git clone이 원격 저장소의 전체 히스토리를 로컬에 복제하는 과정, 클론 직후 자동으로 설정되는 origin과 추적 브랜치, --depth를 이용한 shallow clone의 트레이드오프를 정리한 Git 챕터다.
git fetch가 원격 데이터만 받아와 안전하게 검토할 여지를 남기는 것과 달리 git pull이 fetch 직후 자동으로 merge(또는 rebase)까지 실행한다는 차이, pull.rebase 설정으로 기본 동작을 바꾸는 법을 정리한 Git 챕터다.
git push로 로컬 커밋을 원격에 반영하는 법, -u 옵션으로 로컬·원격 브랜치의 upstream 추적 관계를 설정하는 이유, push가 거부되는 경우와 --force-with-lease의 안전성을 정리한 Git 챕터다.
Fork로 저장소를 복제해 기여 권한 없이도 변경을 제안하는 구조, Pull Request가 코드 리뷰와 병합을 잇는 방식, GitHub Flow의 단순한 규칙(main은 항상 배포 가능)을 정리한 Git 4부 마무리 챕터다.
git tag로 특정 커밋에 릴리스 버전 같은 영구적인 이름을 붙이는 법, 가벼운 태그와 주석 달린(annotated) 태그의 차이, 태그를 원격에 push하는 별도 절차를 정리한 Git 4부 마무리 챕터다.
git reset이 HEAD가 가리키는 위치를 옮기는 명령이라는 원리, soft/mixed/hard 세 모드가 04장의 3단계 모델 중 어디까지 되돌리는지, hard reset의 데이터 손실 위험을 정리한 Git 5부 첫 챕터다.
git revert가 히스토리를 재작성하지 않고 반대 변경을 담은 새 커밋을 추가하는 방식으로 안전하게 되돌리는 원리, reset과의 근본적인 차이, 병합 커밋을 되돌릴 때 -m이 필요한 이유를 정리한 Git 챕터다.
작업 트리의 파일 변경을 되돌리는 git restore와 오래된 git checkout -- <file> 표기, --source로 임의 커밋의 특정 파일만 되돌리는 법, 되돌린 변경이 복구 불가능한 이유를 정리한 Git 챕터다.
git cherry-pick이 다른 브랜치의 특정 커밋 하나만 골라 현재 브랜치에 재적용하는 원리, 핫픽스를 여러 릴리스 브랜치에 반영하는 대표 시나리오, 충돌 해결 절차와 커밋 해시가 바뀌는 이유를 정리한 Git 챕터다.
git rebase -i로 여러 커밋을 pick/squash/reword/drop 명령으로 재정리하는 법, 편집기에 열리는 todo 목록을 읽는 법, Pull Request를 올리기 전 커밋을 논리적 단위로 정돈하는 실전 절차를 정리한 Git 챕터다.