728x90
협업의 필수 요소, Git과 GitHub
오늘은 형상관리에 대해 알아보자.
오늘의 배움 |
|
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 |