백엔드 개발자

형상 관리 Git 본문

카테고리 없음

형상 관리 Git

임잠탱 2025. 3. 23. 20:58

1. 형상 관리란?

형상 관리(Configuration Management)는 소프트웨어 개발 및 운영 과정에서 코드, 문서, 설정 파일 등 모든 시스템 구성요소의 변경을 체계적으로 관리하는 활동이다.

=> 쉽게 말하면 "내가 만든 코드나 시스템이 언제, 왜, 누가, 어떻게 바뀌었는지 기록하고 관리하는 것" 이다.

주요 목적

  • 일관성 유지: 코드, 문서, 설정 값 등이 원하는 상태로 유지
  • 변경 관리: 변경 이력을 기록하고 추적
  • 품질 보증: 의도하지 않은 변경이나 오류 방지
  • 협업 지원: 충돌 없이 효율적으로 협업 가능
  • 재현성 확보: 과거 특정 시점으로 시스템 복원 가능

2. 형상 관리 프로세스

  1. 형상 식별: 관리할 항목 정의 (코드, 문서, 설정 등)
  2. 형상 통제: 변경 요청 승인 및 반영
  3. 형상 상태 기록: 현재 상태와 변경 이력 기록
  4. 형상 감사: 요구사항에 맞게 적용됐는지 검토 및 검사

3. 분산형 vs 중앙집중형 VCS

중앙집중형 VCS

  • 중앙 서버가 존재하며, 모든 작업은 서버와 직접 통신
  • 서버 다운 시 작업 불가
  • 서버에만 전체 이력 존재 (ex: SVN, CVS)

분산형 VCS

  • 모든 사용자가 전체 이력을 로컬에 복제
  • 서버가 없어도 로컬에서 작업 가능 (ex: Git, Mercurial)
구분 중앙집중형 분산형
서버 의존성 높음 낮음
오프라인 작업 불가 가능
예시 도구 SVN, CVS Git, Mercurial
장점 통제 용이, 내부망 전용 환경에 적합. 백업 안정성(로컬), 병령 개발에 유리.

 


4. Git과 Git 플랫폼(GitHub, GitLab, Bitbucket)

Git

  • 버전 관리 시스템(VCS) 그 자체
  • 로컬에서 코드 및 변경 이력 관리 가능

GitHub, GitLab, Bitbucket

  • Git 저장소를 온라인에서 협업/공유할 수 있게 해주는 플랫폼
  • CI/CD, 코드 리뷰, 이슈 트래킹 등 다양한 부가 기능 제공
플랫폼 특징
GitHub 오픈소스 친화, GitHub Actions 제공
GitLab 온프레미스 가능, GitLab CI/CD 내장
Bitbucket Atlassian(Jira)과 연동 용이, Pipelines 지원

5. Git 필수 명령어 및 예제

clone

  • 원격 저장소를 내 로컬에 복제
git clone https://github.com/user/repo.git

pull

  • 원격 저장소의 변경사항을 로컬로 가져와 병합 (Fetch + Merge)
git pull origin main

push

  • 로컬의 변경사항을 원격 저장소로 전송
git push origin feature/login

fetch

  • 원격 저장소의 변경사항을 로컬로 가져오기만 하고 병합은 안함
git fetch origin

merge

  • 두 브랜치를 병합하면서 merge commit 생성
git checkout main
git merge feature/login

fork & upstream 등록

git remote add upstream https://github.com/원본주소.git
git fetch upstream
git merge upstream/main

 


6. 브랜치 병합 전략 및 예제

merge

git checkout main
git merge feature/login
  • 병합 커밋이 생성되어 히스토리 분기가 유지됨

rebase

git checkout feature/login
git rebase main
  • 커밋들을 main 뒤로 재배치하여 선형 히스토리 생성

squash (merge 시)

git checkout main
git merge --squash feature/login
git commit -m "feat: 로그인 기능 추가"
  • 커밋을 하나로 합쳐서 병합

cherry-pick

git checkout main
git cherry-pick abc1234
  • 특정 커밋만 골라서 적용

7. 실무에서 유용한 Git 명령어 및 예제

rebase -i (인터랙티브 rebase)

git rebase -i HEAD~3
  • 여러 커밋을 squash 등으로 합치고 커밋 메시지 정리

stash

git stash
# 임시 저장 후 다른 브랜치로 이동 가능
git stash pop

reflog

git reflog
# 과거 HEAD 상태 확인 및 복구 가능
git reset --hard HEAD@{2}

reset

git reset --soft HEAD~1
  • soft/mixed/hard로 커밋/스테이징/작업 디렉토리 삭제 범위 선택

git log 그래프 보기

git log --oneline --graph --all
  • 브랜치 구조를 한눈에 확인

cherry-pick

git cherry-pick 커밋해시
  • 특정 커밋 하나만 골라서 내 브랜치에 적용

Comments