/
https://42jerrykim.github.io/ _index.md
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 챕터다.
git reflog가 HEAD의 이동 이력을 별도로 기록해 hard reset이나 브랜치 강제 삭제로 잃어버린 것처럼 보이는 커밋을 되찾는 원리, reflog의 로컬 전용 특성과 만료 기간을 정리한 Git 5부 마무리 챕터다.
git stash가 커밋하지 않은 변경을 임시로 치워두고 나중에 복원하는 원리, 스택 구조로 여러 stash를 관리하는 법, 브랜치 전환 시 충돌을 피하는 대표 시나리오와 stash 자체가 커밋으로 구현된다는 사실을 정리한 Git 6부 첫 챕터다.
git clean이 .gitignore로도 걸러지지 않는 미추적 파일을 일괄 삭제하는 원리, 되돌릴 수 없는 삭제를 실행하기 전 -n(dry-run)으로 미리 확인해야 하는 이유, -d와 -x 옵션의 범위 차이를 정리한 Git 챕터다.