Develop/SW공학

형상관리 개요, Git 개요를 알아보자.

YOOZI. 2025. 4. 14. 16:38
728x90
협업의 필수 요소, Git과 GitHub

 

 

 

오늘은 형상관리에 대해 알아보자.

오늘의 배움
  • 형상관리의 개념과 목표
  • Git의 기본 원리와 사용법
  • GitHub의 역할과 Git과의 차이점
  • Git 명령어와 워크플로우

1. 형상관리

 

  • 정의: 소프트웨어 개발과정에서 코드, 문서, 설정 파일 등 다양한 구성 요소의 변경사항을 체계적으로 추적하고 관리하는 활동
  • 한 줄 요약: "소프트웨어 개발 과정의 모든 산출물을 추적하고 관리하여 일관성과 품질을 보장하는 체계적인 방법"
  • 특징:
    • 변경 사항을 시간 순서대로 기록하고 추적
    • 여러 개발자의 동시 작업 지원
    • 특정 시점으로 복원 가능
    • 변경 이력과 내용 문서화
  • 필요성:
    • 팀 협업 시 코드 충돌 방지 및 해결
    • 오류 발생 시 이전 버전으로 롤백 가능
    • 변경 내역 추적으로 책임 소재 명확화
    • 일관된 개발 환경 제공
  • 장점/단점:
    • 장점: 협업 효율성 향상, 버전 추적 용이, 안정적인 코드 품질 유지
    • 단점: 학습 시간 필요, 규모가 작은 프로젝트에선 오버헤드 발생 가능
  • 예시: 여러 개발자가 서로 다른 기능을 개발하다가 하나의 프로젝트로 통합할 때 변경 사항을 충돌 없이 합치는 과정
웹 서비스 개발 프로젝트에서:

- 개발자 A는 로그인 기능을, B는 게시판 기능을, C는 결제 기능을 각각 다른 브랜치에서 개발
- 각자 완성된 기능을 테스트한 후 메인 브랜치에 병합(merge)
- 병합 과정에서 충돌이 발생하면 해결하고 최종 버전 확정
- 버그 발견 시 커밋 히스토리를 확인하여 문제가 발생한 시점 파악 및 수정

 


2. 핵심 개념 정리

2-1. Git

  • 정의: 분산형 버전 관리 시스템으로, 소스 코드의 변경 사항을 추적하고 여러 버전을 관리
  • 작동 원리: 파일의 변경 사항을 스냅샷으로 저장하고, 변경된 부분만 효율적으로 관리
  • 특징:
    • 분산형 구조로 로컬에서 작업 가능
    • 브랜치를 통한 병렬 개발 지원
    • 빠른 속도와 효율적인 저장 방식
  • 장점/단점:
    • 장점: 오프라인 작업 가능, 브랜치/병합 기능 강력, 데이터 무결성 보장
    • 단점: 초기 학습 난이도가 있음, 바이너리 파일 관리에 비효율적
  • 필요성: 여러 개발자가 동시에 작업할 때 코드 충돌을 방지하고 변경 이력을 체계적으로 관리
  • 예시:
# 새 저장소 초기화
git init

# 파일 상태 확인
git status

# 변경된 파일을 스테이징 영역에 추가
git add index.html

# 스테이징된 변경사항 커밋
git commit -m "로그인 페이지 디자인 수정"

# 커밋 이력 확인
git log --oneline

2-2. GitHub

 

  • 정의: Git 저장소를 클라우드에서 호스팅하는 웹 기반 플랫폼
  • 작동 원리: Git의 원격 저장소 역할을 하며, 다양한 협업 도구 제공
  • 구조:
    • 원격저장소 (Remote Repository): 서버(github, gitLab 등등) 에 위치한 영역이다.
    • 로컬저장소(Local Repository): 개인 PC에 존재하는 관리 영역으로 .git이라고하는 폴더를 가진 폴더를 가지고 있는것을 로컬저장소라고 한다. 이 폴더 안에서 각 코드의 형상을 스냅샷으로 관리하고 있다.
    • 작업공간(workspace): 실제로 작성하는 코드가 위한 위치의 영역이다. 특정 branch가 추가되면 switch 또는 checkout 명령어를 통해서 변경할 수 있는데, 변경할 때마다 각 branch에 기록된 내용으로 변경된다.
    • 스테이징영역(Staging Area): 반영되기 직전의 파일들의 임시저장소를 의미한다. git add 명령어를 통해서 변경파일을 staging area에 올려둘 수 있다. git commit 명령어를 통해서 로컬저장소에 반영할 수 있다.
  • 특징:
    • 웹 인터페이스로 코드 검토 가능
    • 이슈 트래커, 위키, 프로젝트 관리 도구 제공
    • Pull Request를 통한 코드 리뷰 프로세스
  • 장점/단점:
    • 장점: 쉬운 협업, 오픈소스 참여 용이, 포트폴리오로 활용 가능
    • 단점: 비공개 저장소의 경우 비용 발생, 인터넷 연결 필요
  • 필요성: 팀 프로젝트에서 코드 공유와 협업을 위한 중앙 저장소 역할
  • 예시:
# 원격 저장소 연결
git remote add origin https://github.com/username/project.git

# 로컬 변경사항을 원격 저장소에 업로드
git push origin main

# 원격 저장소의 변경사항 가져오기
git pull origin main

# 원격 저장소 복제하기
git clone https://github.com/username/project.git

 


2-3. Git 워크플로우

  • 정의: Git을 사용한 개발 프로세스의 흐름과 단계
  • 작동 원리: 작업 영역, 스테이징 영역, 로컬 저장소, 원격 저장소 간의 데이터 이동
  • 특징:
    • 단계적인 변경 사항 관리
    • 브랜치 전략을 통한 병렬 개발
    • 코드 리뷰와 병합 프로세스
  • 장점/단점:
    • 장점: 체계적인 개발 프로세스, 안정적인 코드 품질 유지
    • 단점: 복잡한 워크플로우는 학습 곡선이 높음
  • 필요성: 효율적인 협업과 코드 품질 관리를 위한 표준화된 프로세스
  • 예시:
# Feature Branch 워크플로우 예시
# 1. 새 기능 브랜치 생성
git checkout -b feature/login

# 2. 코드 변경 및 커밋
git add .
git commit -m "로그인 기능 구현"

# 3. 메인 브랜치 최신화
git checkout main
git pull origin main

# 4. 기능 브랜치 병합 또는 Pull Request 생성
git checkout feature/login
git rebase main
git checkout main
git merge feature/login

# 5. 원격 저장소에 푸시
git push origin main

3. 비교 분석표  

항목 Git GitHub
정의 분산 버전 관리 시스템 Git 저장소를 호스팅하는 클라우드 기반 플랫폼
역할 소스 코드의 변경 사항을 추적하고 버전 관리 수행 원격 저장소 제공 및 협업 도구 지원
운영 방식 로컬 컴퓨터에서 독립적으로 실행 웹 기반으로 운영되며 인터넷 연결 필요
주요 기능 - 파일 변경 이력 추적
- 브랜치 생성 및 병합
- 로컬에서 작업 가능
- 원격 저장소 제공
- 코드 리뷰 및 협업
- 이슈 관리
- 프로젝트 문서화 및 위키 지원
사용 목적 소스 코드 관리 및 버전 기록 팀 협업 및 코드 공유
728x90

'Develop > SW공학' 카테고리의 다른 글

테스트를 알아보자.  (1) 2025.04.14
객체 설계를 알아보자.  (0) 2025.04.14
시스템 설계를 알아보자.  (2) 2025.04.14
SW공학 - 요구사항 분석 알아보자.  (1) 2025.04.11