형상 관리(Configuration Management) 또는 버전 관리(Version Control)는 소프트웨어 개발 과정에서 소스 코드와 관련 파일들의 변경 사항을 체계적으로 추적하고 관리하는 시스템입니다.
형상 관리 시스템은 다음과 같은 핵심 기능을 제공합니다:
개발 과정의 안정성 확보
효율적인 협업 환경 구축

중앙 집중식 버전 관리 (CVCS)

분산 버전 관리 (DVCS)
GitHub는 Git을 기반으로 하는 클라우드 기반 소스 코드 호스팅 및 협업 플랫폼입니다. Microsoft가 소유한 이 웹 서비스는 전 세계 7,300만 명 이상의 개발자가 사용하는 세계 최대의 소프트웨어 개발 플랫폼입니다.
Git (도구)
GitHub (서비스)
1. 코드 백업 및 접근성
2. 협업 기능
3. 오픈소스 생태계
개인 프로젝트 관리
팀 협업
오픈소스 기여
GitHub를 효과적으로 사용하기 위해서는 핵심 개념들을 이해해야 합니다. 이러한 개념들은 Git의 기본 원리와 GitHub의 협업 기능을 포함합니다.
정의: 프로젝트의 모든 파일과 각 파일의 수정 이력을 저장하는 공간
로컬 저장소 (Local Repository)
git init 명령으로 생성원격 저장소 (Remote Repository)
git clone으로 접근 정의: 파일의 변경 사항을 저장소에 기록하는 행위
커밋의 구성 요소
좋은 커밋 메시지 작성법
정의: 독립적인 작업 공간을 만들어 메인 코드에 영향 없이 개발할 수 있는 기능
주요 브랜치 유형
브랜치 전략의 장점
정의: 서로 다른 브랜치의 변경 사항을 하나로 합치는 작업
병합 방식
충돌 (Conflict) 해결
정의: 자신의 변경 사항을 다른 브랜치에 병합해달라고 요청하는 GitHub의 협업 기능
Pull Request 프로세스
1. 기능 브랜치에서 작업 완료
2. GitHub에 푸시
3. Pull Request 생성
4. 팀원들의 코드 리뷰
5. 피드백 반영 및 수정
6. 승인 후 메인 브랜치에 병합
코드 리뷰의 이점
Fork (포크)
Clone (클론)
git clone <repository-url> 명령 사용차이점
정의: 버그 리포트, 기능 요청, 질문 등을 추적하고 관리하는 도구
Issue 활용
Issue와 Pull Request 연결
#이슈번호 포함Closes #이슈번호 작성Git과 GitHub를 사용하기 위한 필수 명령어들을 카테고리별로 정리합니다. 명령줄 인터페이스(CLI)를 통해 효율적으로 버전 관리를 수행할 수 있습니다.
새 저장소 생성
git init
.git 폴더 생성 (버전 관리 정보 저장)원격 저장소 복제
git clone <repository-url>
예시
git clone https://github.com/username/repository.git
파일 상태 확인
git status
변경 사항 스테이징
git add <파일명> # 특정 파일 추가
git add . # 모든 변경 파일 추가
git add *.js # 특정 패턴 파일 추가
커밋 생성
git commit -m "커밋 메시지"
git commit -am "메시지" # add + commit 동시 수행
커밋 이력 확인
git log # 전체 커밋 이력
git log --oneline # 간략한 형식
git log --graph # 그래프 형식
브랜치 생성 및 전환
git branch <브랜치명> # 브랜치 생성
git checkout <브랜치명> # 브랜치 전환
git checkout -b <브랜치명> # 생성 + 전환
git switch <브랜치명> # 브랜치 전환 (최신 방식)
브랜치 목록 확인
git branch # 로컬 브랜치 목록
git branch -r # 원격 브랜치 목록
git branch -a # 모든 브랜치 목록
브랜치 삭제
git branch -d <브랜치명> # 병합된 브랜치 삭제
git branch -D <브랜치명> # 강제 삭제
브랜치 병합
git merge <브랜치명>
리베이스
git rebase <브랜치명>
충돌 해결
git status # 충돌 파일 확인
# 파일 수정 후
git add <파일명>
git commit # 병합 완료
원격 저장소 연결
git remote add origin <repository-url>
git remote -v # 원격 저장소 목록 확인
변경사항 업로드
git push origin <브랜치명>
git push -u origin main # 기본 브랜치 설정
git push --all # 모든 브랜치 푸시
변경사항 다운로드
git fetch # 원격 변경사항 가져오기 (병합 X)
git pull # 가져오기 + 병합
git pull origin main # 특정 브랜치에서 가져오기
원격 브랜치 추적
git checkout -b <로컬브랜치> origin/<원격브랜치>
작업 디렉토리 변경 취소
git checkout -- <파일명> # 파일 변경 취소
git restore <파일명> # 파일 복원 (최신 방식)
스테이징 취소
git reset HEAD <파일명>
git restore --staged <파일명> # 최신 방식
커밋 되돌리기
git reset --soft HEAD~1 # 커밋만 취소, 변경사항 유지
git reset --mixed HEAD~1 # 커밋 + 스테이징 취소
git reset --hard HEAD~1 # 모든 변경사항 삭제
커밋 수정
git commit --amend # 마지막 커밋 수정
git commit --amend -m "새 메시지" # 메시지만 수정
특정 커밋 되돌리기
git revert <커밋해시> # 새로운 커밋으로 되돌림
변경사항 임시 저장
git stash # 현재 변경사항 임시 저장
git stash save "메시지" # 메시지와 함께 저장
임시 저장 목록 확인
git stash list
임시 저장 복원
git stash pop # 가장 최근 stash 적용 + 삭제
git stash apply # 적용만 하고 삭제 안함
git stash apply stash@{n} # 특정 stash 적용
임시 저장 삭제
git stash drop stash@{n} # 특정 stash 삭제
git stash clear # 모든 stash 삭제
태그 생성
git tag v1.0.0 # 경량 태그
git tag -a v1.0.0 -m "버전 1.0.0 릴리스" # 주석 태그
태그 목록 확인
git tag # 모든 태그 목록
git tag -l "v1.*" # 패턴 매칭
태그 푸시
git push origin v1.0.0 # 특정 태그 푸시
git push origin --tags # 모든 태그 푸시
태그 삭제
git tag -d v1.0.0 # 로컬 태그 삭제
git push origin :refs/tags/v1.0.0 # 원격 태그 삭제
사용자 정보 설정
git config --global user.name "이름"
git config --global user.email "이메일"
설정 확인
git config --list # 모든 설정 확인
git config user.name # 특정 설정 확인
별칭(Alias) 설정
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.st status
도움말
git help <명령어>
git <명령어> --help