Ted's Codding study
버전 관리 시스템(Version Control System, VCS) 본문
버전 관리 시스템(Version Control System, VCS) Ted93 2024. 5. 7. 19:08
1. 정의
- 파일 변화를 시간에 따라 기록했다가 나중에 특정 버전을 다시 꺼내올 수 있는 시스템
- 주로 소프트웨어 개발에서 소스 코드의 변경 사항을 관리하는데 사용
2. 버전 관리가 필요한 이유
팀 프로젝트의 보고서를 작성 프로젝트는 여러 단계를 거치며 진행되며, 보고서도 여러 번 수정 진행 초기에 작성한 보고서에서 시작하여, 검토를 거쳐 수정 사항이 추가되고, 중요한 데이터가 포함
버전 1: 초안 (주제와 대략적인 내용 설명)
버전 2: 중간 검토 후 추가된 데이터와 분석 결과 포함
버전 3: 최종 검토와 수정 후 최종본
만약 이러한 각 단계를 저장하지 않고 계속 한 파일 위에 덮어쓰기를 한다면, 중간 단계의 중요한 데이터나 변경 사항이 손실 버전 관리 시스템은 이러한 각 버전을 안전하게 보관하고 필요할 때 언제든지 원하는 버전으로 복기 가능
일러스트나 포토샵의 경우에는 용량이 너무 커져서 데이터 용량 관리에 비효율적
3. Git과 GitHub
Git
:컴퓨터 파일의 변경사항을 추적하고 '여러 사용자'들 간에 해당 파일 작업을 조율하기 위한
-> 대표적인 버전 관리 시스템
:분산형 버전 관리 도구
:로컬과 리모트 저장소에서 작업을 관리
>> 각 개발자는 로컬에서 작업한 후, 변경 사항을 중앙 서버에 업로드(푸시)하여 다른 개발자와 공유 가능
GitHub
: Git 저장소를 호스팅하는 웹 기반 서비스
: 프로젝트의 코드를 안전하게 저장, 다른 개발자와 협업 진행에 용이
- 전 세계 개발자들이 소프트웨어를 더 나은 방식으로 만들 수 있도록 돕는 개발 플랫폼
- GitHub의 가장 기본적인 기능은 Git 리포지토리의 호스팅입니다.
-> 이를 통해 사용자는 자신의 프로젝트를 웹상에 저장하고, 전 세계 어디에서나 접근
- Pull Request
: 코드 변경 사항을 다른 개발자에게 검토받고 병합을 요청하는 기능입니다.
-> 개발자는 자신이 작업한 브랜치의 코드를 메인 브랜치에 병합하기 전에 Pull Request를 생성
4. Git의 기본 구조
3가지의 기본 구조(상태)를 가짐 : 파일들이 3가지의 구조 상태를 거쳐 이동되며 버전 관리됨
1. 작업 디렉토리(Working Directory)
작업 디렉토리는 사용자가 실제로 파일을 수정하는 곳입니다. 이곳의 파일들은 아직 Git에 의해 관리되고 있지 않은 상태이며, 사용자의 로컬 파일 시스템에 존재합니다. 사용자가 소스 코드를 수정하거나 새 파일을 생성하는 모든 작업은 여기에서 이루어집니다.
2. 스테이지(인덱스, Staging Area)
스테이지(또는 인덱스)는 커밋하기 전에 준비하는 단계입니다. 작업 디렉토리에서 변경된 파일 중 Git에 기록하고자 하는 변경 사항을 선택(스테이징)하여 스테이지에 올리게 됩니다. 이는 마치 커밋을 위한 임시 저장 공간처럼 작동합니다.
3. (로컬) 리포지토리(Local Repository)
리포지토리는 스테이지에 올린 변경 사항들이 커밋되어 저장되는 곳입니다. 여기에 저장된 데이터는 Git 데이터베이스에 안전하게 보관되며, 이러한 커밋들은 프로젝트의 히스토리를 구성하고 언제든지 과거의 상태로 복원할 수 있게 해줍니다.
- 개발자의 개인 컴퓨터 내에 위치
- 개발자가 자신의 작업 환경에서 자유롭게 코드를 수정하고, 커밋을 통해 변경사항을 저장할 수 있는 개인 저장 공간
- 로컬 리포지토리의 주된 목적은 개발자가 독립적으로 작업을 진행하면서도 모든 버전의 히스토리를 관리할 수 있도록 하는 것
4. 원격 리포지토리(Remote Repository)
원격 리포지토리는 인터넷이나 네트워크 어딘가에 위치한 서버에 저장된 리포지토리입니다. GitHub, GitLab, Bitbucket 같은 서비스들이 이를 호스팅합니다. 원격 리포지토리의 주된 목적은 협업과 백업입니다. 여러 개발자가 같은 프로젝트에 참여할 경우, 각자의 로컬 리포지토리에서 작업한 내용을 원격 리포지토리로 푸시하고, 다른 개발자의 작업 내용을 풀하여 자신의 로컬 리포지토리에 반영할 수 있습니다.
노션으로 보고 싶다면?
버전 관리 시스템(Version Control System, VCS) | Notion
1. 정의
short-echidna-b16.notion.site