Git 명령어

문건희·2025년 8월 2일

Git & GitHub 완전 정리 - 학습용 가이드

📋 목차

  1. Git 기본 개념
  2. 브랜치와 워크플로우
  3. Pull Request (PR)
  4. Merge의 이해
  5. PR vs Merge 차이점
  6. 커밋 메시지 작성 규칙
  7. Git 명령어 실무 활용
  8. 실제 워크플로우 예시

Git 기본 개념

Git이란?

  • 버전 관리 시스템: 코드의 변화를 추적하고 관리
  • 분산 저장소: 로컬과 원격(GitHub)에 각각 저장
  • 협업 도구: 여러 사람이 동시에 작업 가능

핵심 용어

용어의미예시
Repository프로젝트 저장소study-insupanda
Commit변경사항 저장 단위Phase 1.1 완료
Branch작업 분기study/01-project-setup
Remote원격 저장소GitHub의 repository
Local로컬 저장소내 컴퓨터의 repository

브랜치와 워크플로우

브랜치란?

main:           A ← B ← C (안정된 버전)
                    ↘
feature:            D ← E ← F (새로운 작업)

브랜치 전략의 장점

  • 안전성: main 브랜치 보호
  • 병렬 작업: 동시에 여러 기능 개발
  • 롤백 용이: 문제 시 특정 브랜치만 제거

WBS 기반 브랜치 전략

# Phase별 브랜치 생성
git checkout -b study/01-project-setup    # Phase 1 전체
git checkout -b phase1-3-env-config       # 개별 작업

Pull Request (PR)

PR이란?

  • 정의: "내 변경사항을 검토해서 main에 반영해달라"는 요청
  • 목적: 코드 리뷰, 품질 관리, 협업
  • 상태: 아직 main에 반영되지 않은 제안 상태

PR 생성 과정

# 1. 작업 완료
git add .
git commit -m "Phase 1.1-1.2: 분석 완료"
git push origin study/01-project-setup

# 2. GitHub에서 PR 생성
# Compare & pull request 버튼 클릭

PR 작성 표준 형식

## 📋 작업 내용
- 구체적인 작업 1
- 구체적인 작업 2

## 🔍 변경 사항
- 추가된 파일
- 수정된 부분

## 📚 학습 성과
- 핵심 학습 내용 1
- 핵심 학습 내용 2

## 📈 진행 상황
- Phase X: Y% 완료
- 전체 프로젝트: Z% 완료

Merge의 이해

Merge란?

  • 정의: 브랜치의 변경사항을 main에 실제로 반영하는 작업
  • 결과: main 브랜치에 새로운 커밋 추가
  • 의미: 공식적인 완료 표시

Merge 과정 시각화

# Merge 전
main:           A ← B ← C
feature:            ↘ D ← E

# Merge 후  
main:           A ← B ← C ← M (merge commit)
                        ↗ ↗
feature:            D ← E

Merge 방법 3가지

1. Create a merge commit (기본)

main:     A ← B ← C ← M (merge commit)
                   ↗ ↗
feature:       D ← E
  • 머지 기록 보존
  • 브랜치 히스토리 유지

2. Squash and merge ⭐ (추천)

main:     A ← B ← C ← S (압축된 하나의 커밋)
feature:       D ← E (원본 유지)
  • 여러 커밋을 하나로 합침
  • 깔끔한 히스토리

3. Rebase and merge

main:     A ← B ← C ← D' ← E' (선형 배치)
  • 선형적 히스토리
  • 고급 사용법

PR vs Merge 차이점

핵심 차이점

구분PR (Pull Request)Merge
목적검토 요청, 소통실제 반영
대상리뷰어, 팀원Git 히스토리
상태제안, 대기 중완료, 반영됨
시점작업 완료 시승인 완료 시

기록 보존

# 둘 다 영구 보존됨!
GitHub → Pull requests → Closed     # PR 기록
GitHub → Commits                    # Merge 기록

제3자가 보는 정보

  • PR: 상세한 작업 과정, 토론, 리뷰 내용
  • Commit: 간결한 변경사항, 실제 코드 diff

커밋 메시지 작성 규칙

표준 커밋 타입

feat: 새로운 기능 추가
fix: 버그 수정
docs: 문서 수정/추가
style: 코드 포맷팅
refactor: 코드 리팩토링
test: 테스트 추가/수정
chore: 기타 작업

학습 프로젝트용 타입

docs: 문서 분석/작성
study: 학습 내용 정리
analysis: 코드/구조 분석
review: 검토 및 정리

제목 작성 규칙

# 좋은 예시
docs: Phase 1.1-1.2 프로젝트 설정 분석 완료
study: RAG 시스템 아키텍처 학습 정리

# 나쁜 예시
Update files                    # 너무 모호
Fix stuff                      # 구체적이지 않음
WIP                           # 완료되지 않은 상태

내용 작성 규칙

# PR 내용 (상세함)
## 📋 작업 내용
## 🔍 변경 사항
## 📚 학습 성과
## 📈 진행 상황

# Merge 내용 (간결함)
간단한 요약

- 핵심 작업 1
- 핵심 작업 2
- 주요 결과

Git 명령어 실무 활용

기본 워크플로우

# 1. 프로젝트 클론
git clone https://github.com/username/repository.git

# 2. 새 브랜치 생성 및 전환
git checkout -b feature/new-branch

# 3. 작업 후 커밋
git add .
git commit -m "feat: 새로운 기능 추가"

# 4. 원격 저장소에 푸시
git push origin feature/new-branch

동기화 명령어 (중요!)

# Merge 후 로컬 동기화
git checkout main              # main 브랜치로 전환
git pull origin main          # 최신 내용 가져오기
git checkout feature-branch   # 작업 브랜치로 복귀
git pull origin main          # 작업 브랜치도 최신화

브랜치 관리

# 브랜치 목록 확인
git branch                    # 로컬 브랜치
git branch -r                 # 원격 브랜치

# 브랜치 삭제
git branch -d branch-name     # 로컬 브랜치 삭제
git push origin -d branch-name # 원격 브랜치 삭제

# 브랜치 상태 확인
git status                    # 현재 상태
git log --oneline -5          # 최근 5개 커밋

실제 워크플로우 예시

시나리오: Phase 1.3 작업 시작

1단계: 환경 준비

cd /Users/moon/Desktop/study-insupanda
git status                    # 현재 상태 확인

2단계: 최신 상태로 동기화

git checkout main
git pull origin main
git checkout study/01-project-setup
git pull origin main

3단계: Phase 1.3 작업

# 파일 분석 및 학습
# 문서 작성

4단계: 커밋 및 푸시

git add .
git commit -m "docs: Phase 1.3 환경설정 파일 분석 완료"
git push origin study/01-project-setup

5단계: PR 생성

# GitHub에서 PR 생성
제목: docs: Phase 1.3 환경설정 파일 분석 완료

내용:
## 📋 작업 내용
- .env 파일 구조 분석
- .gitignore 설정 분석
- Docker 관련 파일 탐색

## 🔍 변경 사항
- README.md 업데이트
- 환경설정 분석 문서 추가

## 📚 학습 성과
- 환경변수 관리 방식 이해
- Git 무시 패턴 학습

## 📈 진행 상황
- Phase 1: 100% 완료 (3/3)
- 전체 WBS: 10% 완료 (3/30)

6단계: Merge 실행

Commit message: docs: Phase 1.3 환경설정 파일 분석 완료

Extended description:
환경설정 파일 구조 및 역할 분석

- .env: 환경변수 관리 방식 파악
- .gitignore: 버전 관리 제외 패턴 학습
- Phase 1 완료: 프로젝트 설정 전체 이해

브랜치 전략 비교

전략 1: Phase별 브랜치

study/01-project-setup     → Phase 1 전체 (1.1, 1.2, 1.3)
study/02-config-utils      → Phase 2 전체
study/03-database          → Phase 3 전체

장점: 관련 작업 묶음, 관리 단순
단점: PR이 커질 수 있음

전략 2: 작업별 브랜치

phase1-1-requirements      → 1.1만
phase1-2-pyproject        → 1.2만  
phase1-3-env-config       → 1.3

장점: 작은 PR, 빠른 리뷰
단점: 브랜치 관리 복잡

전략 3: 하이브리드 (추천)

# 첫 작업은 통합, 이후 개별
study/01-project-setup     → 1.1 + 1.2 (이미 완료)
phase1-3-env-config        → 1.3 개별
phase2-1-config-folder     → 2.1 개별

문제 상황별 해결법

1. Merge 충돌 발생

# 충돌 해결 후
git add .
git commit -m "resolve: merge conflict 해결"
git push origin branch-name

2. 잘못된 커밋 수정

# 마지막 커밋 메시지 수정
git commit --amend -m "새로운 커밋 메시지"

# 아직 푸시 안한 경우만 사용!

3. 브랜치 삭제 후 복구

# 삭제된 브랜치 복구
git reflog                          # 참조 로그 확인
git checkout -b 브랜치명 커밋해시     # 특정 커밋에서 브랜치 생성

4. 원격과 로컬 불일치

# 강제 동기화 (주의!)
git fetch origin
git reset --hard origin/main

좋은 Git 습관

✅ Do (해야 할 것)

  • 자주 커밋하기 (의미 있는 단위로)
  • 명확한 커밋 메시지 작성
  • 작업 전 항상 동기화
  • 브랜치 이름 규칙적으로 작성
  • PR에 충분한 설명 추가

❌ Don't (하지 말 것)

  • main 브랜치에 직접 푸시
  • 너무 큰 단위로 커밋
  • 모호한 커밋 메시지
  • 동기화 없이 작업 시작
  • 테스트 없이 머지

유용한 Git 설정

글로벌 설정

# 사용자 정보 설정
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# 기본 에디터 설정
git config --global core.editor "code --wait"

# 줄바꿈 설정 (Windows)
git config --global core.autocrlf true

유용한 별칭

# 자주 사용하는 명령어 단축
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm commit
git config --global alias.lg "log --oneline --graph --all"

마무리

핵심 기억사항

  1. Git은 협업 도구: 혼자 써도 체계적 관리 가능
  2. 브랜치 활용: 안전한 작업 환경 제공
  3. 명확한 기록: 나중의 나를 위한 친절함
  4. 표준 준수: 일관성 있는 패턴 유지

지속적 학습 포인트

  • Git 고급 명령어 (rebase, cherry-pick 등)
  • GitHub Actions (CI/CD)
  • Git 훅 활용
  • 대규모 프로젝트 브랜치 전략

참고 자료


이 가이드는 실제 프로젝트 경험을 바탕으로 작성되었습니다. 계속 업데이트하며 사용하세요! 🚀

0개의 댓글