반응형
1. Git의 핵심 구조 이해
Git은 분산 버전 관리 시스템입니다. 핵심 요소는 다음과 같습니다.
구성요소 | 역할 |
Working Directory | 내 컴퓨터에서 수정 중인 실제 파일들이 있는 공간 |
Staging Area (Index) | 커밋 전에 “올려두는” 대기 공간 (git add) |
Local Repository | 내 PC에 저장된 Git DB (.git 폴더) |
Remote Repository | GitHub, GitLab, Bitbucket 등 원격 저장소 |
📌 흐름
수정 → git add(스테이징) → git commit(로컬 저장소 기록) → git push(원격 반영)
2. 브랜치(Branch) 기본기
- 브랜치는 개발 라인을 나누는 개념
- master/main: 배포 가능한 안정 버전
- feature/: 기능 개발용 브랜치
- hotfix/: 긴급 수정
- release/: 배포 준비 단계
실무 원칙:
- master는 항상 배포 가능 상태 유지
- 기능 개발은 feature/기능명에서 작업
- 완료 즉시 master에 병합(Merge) 후 브랜치 삭제
3. 병합(Merge) 방식
- Fast-forward merge: 브랜치가 master보다 앞에만 있는 경우, 그냥 앞으로 이동
- 3-way merge: 양쪽 브랜치 모두 변경이 있어 새 커밋을 만들어 병합
- Squash merge: 여러 커밋을 1개로 합쳐 깔끔하게 병합 (히스토리 단순화)
4. 원격 동기화 기본 명령
git fetch # 원격 변경사항 가져오기 (병합X)
git pull # fetch + merge
git push # 로컬 변경사항을 원격에 업로드
💡 git fetch --all --prune
모든 원격 브랜치 최신화 + 원격에서 삭제된 브랜치 로컬에서도 제거
5. 브랜치 상태 확인
git branch # 로컬 브랜치 목록
git branch -r # 원격 브랜치 목록
git branch -vv # 추적 관계와 최신 커밋 상태
git log --oneline --graph --all
6. 브랜치 정리(실무에서 자주 하는 패턴)
master 최신화
git checkout master
git fetch --all --prune
git pull
병합된 브랜치 삭제
git branch --merged master | egrep -v '^\*| master' | xargs git branch -d
git branch --merged master는 master에 이미 병합된 로컬 브랜치 목록을 보여줍니다.
egrep -v '^\*| master'는 현재 체크아웃된 브랜치(*)와 master 자체를 제외합니다.
그 결과 남은 브랜치들을 xargs git branch -d로 순차 삭제하여, master에 병합된 불필요한 브랜치를 안전하게 정리합니다.
원격 브랜치 삭제
git push origin --delete 브랜치명
7. 커밋 관리 기본
- 좋은 커밋 메시지 구조
타입(영역): 간결한 설명 (한 줄)
[빈 줄]
상세 설명 (필요 시)
타입 예시:
- feat: 새로운 기능 추가
- fix: 버그 수정
- docs: 문서 변경
- refactor: 코드 리팩터링
- chore: 기타 변경(빌드, 환경설정 등)
8. 실무 습관 포인트
- 기능 하나당 하나의 브랜치 → 완료 후 즉시 머지 & 삭제
- 의미 있는 단위로 커밋
- 커밋 메시지에 왜 변경했는지 기록
- 병합 전 항상 git pull --rebase로 최신 상태 맞추기
- 브랜치/커밋 정리는 정기적으로(예: 2주마다)
반응형
댓글