#버전 관리
18 편의 글
git push --force로 커밋을 덮어썼을 때 — 복구와 재발 방지
force push로 원격 브랜치에서 동료의 커밋이 사라졌을 때의 복구 절차를 정리합니다. 동료의 로컬, 내 reflog, 호스팅 서비스의 기록 세 경로와 재발 방지 설정까지 다룹니다.
Git에 대용량 파일을 커밋했을 때 — 히스토리 정리와 LFS 이전
push가 100MB 제한으로 거부되거나 저장소가 수 GB로 불어난 상황의 대응 절차입니다. 가장 큰 blob을 찾는 진단부터 filter-repo 히스토리 정리, 계속 필요한 파일의 Git LFS 이전까지 정리합니다.
Git에 비밀키를 커밋했을 때 — 키 회전과 filter-repo 히스토리 정리
AWS 키, API 토큰, .env 파일을 커밋하고 push까지 한 사고의 대응 절차를 정리합니다. 1순위는 히스토리 정리가 아니라 키 무효화입니다. filter-repo로 히스토리를 다시 쓰는 절차와 예방 장치까지 다룹니다.
Git detached HEAD에서 빠져나오기 — 원인과 커밋 복구
You are in detached HEAD state 경고의 의미를 구조로 설명하고, 상황별 탈출 방법을 정리합니다. 이 상태에서 만든 커밋을 잃지 않고 브랜치로 보존하는 법까지 다룹니다.
지운 Git 커밋과 브랜치 살리기 — reflog 복구 절차
git reset --hard로 날린 커밋과 -D로 지운 브랜치를 reflog로 복구하는 절차를 정리합니다. reflog가 기록하는 것과 기록하지 않는 것, 복구가 불가능한 경우까지 구분합니다.
Git 실무 워크플로우 #7 모노레포와 Git — sparse-checkout·서브모듈·LFS
저장소가 커질 때 Git이 느려지는 이유를 짚고, partial clone, sparse-checkout, 서브모듈, Git LFS를 언제 꺼내 쓰는지 정리합니다. Git 실무 워크플로우 시리즈의 마지막 편입니다.
Git 실무 워크플로우 #6 stash·cherry-pick·bisect — 일상 도구 셋
작업 중 급한 전환을 받아 주는 stash, 특정 커밋만 다른 브랜치에 옮기는 cherry-pick, 버그 유입 커밋을 이진 탐색으로 찾는 bisect까지. 필요한 순간에 없으면 곤란한 세 도구를 정리합니다.
Git 실무 워크플로우 #3 interactive rebase — squash·fixup으로 커밋 정리
PR을 열기 전에 커밋을 읽을 수 있는 단위로 정리하는 interactive rebase를 다룹니다. todo 리스트의 여섯 가지 명령, fixup과 autosquash 워크플로우, 정리한 브랜치를 안전하게 올리는 force-with-lease까지 정리합니다.