[도서] 아는 만큼 보이는 백엔드 개발 - Ch6. 버전 관리 시스템

곽동현·2024년 2월 28일
0

Chapter6 : 버전 관리 시스템

📌목차

6-1) 버전 관리 시스템의 개요

6-2) 분산 버전 관리 시스템: 깃

6-3) 웹 기반 버전 관리 저장소: 깃허브



✅ 내용정리

분산 버전 관리 시스템 탄생 배경

과거에는 중앙 집중식(CVCS,Centralized VCS) 방식으로 버전을 관리했다.
(한 컴퓨터로만 저장소를 담당하여 모든 파일을 관리 하는 것)
해당 방식은 여러 문제점이 존재했다.

  • 모든 커뮤터가 네트워크에 연결돼 있어야만 작업이 가능하다.
  • 서버에 문제가 생기면 작업이 불가하다.
  • 지속적인 통신으로 네트워크가 느리면 효율이 떨어진다.

이러한 문제점들을 보완하고자 나온 방식이 분산 방식(DVCS, Distributed VCS)이다.
더이상 한 컴퓨터에서만 저장소를 담당하는 것이 아닌, 모든 컴퓨터가 저장소로서 버전을 관리한다.

  • 하지만 이를 오류 없이 활용하기 위해선, 반드시 양쪽 시스템 간의 동기화를 실시 해주어야 한다.
    • 동기화 방식은 Merge(병합) / pull(가져오기) 를 채택하여 사용한다.

깃(Git)의 동작 방식

1) 깃은 폴더내에서 "git init" 명령어를 실시할 시 .git 파일이 생성됨과 동시에 해당 폴더의 변경이력을 관리한다.
2) 폴더 내에 A B C 라는 파일이 있을 때, 세 개 파일 중 어느 파일이라도 변경이 감지되면, 폴더 전체를 저장한다.
-> 이는 마치 스크린샷을 찍어 저장하는 것과 같아 스냅샷(Snapshot) 이라고 칭한다.
3) 수많은 스냅샷을 관리하면서 변경을 감지하고, 버전을 관리한다.

깃의 작업 영역 ( 작업 공간 / 스테이징 영역 / 내부 저장소 )

깃은 3개의 작업 영역을 이용하며, 스냅샷을 관리한다.

  • 작업 공간(working directory)
    -> 현재 작업하고 있는 폴더를 말한다.
    -> "git add" 명령어를 사용시, 스테이징 영역으로 작업 파일을 올릴 수 있다.

  • 스테이징 영역(staging area) :
    -> 내부 저장소로 가기 전 임시로 보관해두는 공간이다.
    -> "git commit" 명령어를 사용시 스냅샷을 찍는 명령어라고 보면된다. 스냅샷을 찍어 내부 저장소로 보낸다.

  • 내부 저장소(local repository)
    -> 최종적으로 .git 폴더 안에 저장되는 스냅샷 저장 공간이다.
    -> 로컬 환경에서 버전 관리(스냅샷 관리)가 된 것이다.

우리는 해당 의문점을 가질 수가 있다. '엥? 굳이 스테이징 영역이 왜 필요해? 그냥 작업공간에서 원할 때 바로 스냅샷 찍어서 내부저장소로 옮기면 되잖아.' 이는, 변경이 너무 빈번하게 일어나기도 하고, 앞서 말했듯 "폴더 전체"를 관리하며 폴더 자체를 저장하는 것이기 때문에, 스테이징에 임시로 올려 원하는 파일만 스냅샷 관리 하기 위함이라고 생각하면 될 것 같다!

깃허브(GitHub) : 웹 기반 외부 저장소

내 컴퓨터에 있는 프로젝트 변경 내역을 다른 개발자에게 공유하기 위해선 어떻게 해야할까?
메신저를 활용해서 폴더나 코드를 보낼 수도 있겠지만 이는 너무 위험하며 비효율적이다.
그래서 생긴 방식이 깃허브 : 외부 저장소이다.
깃허브를 통해서 서로 다른 개발자들이 모두가 최신 버전의 파일을 가지고 작업할 수 있다.
-> 서로 다른 개발자들끼리 스냅샷끼리 비교하며 관리하기 때문에 충돌을 피하기 위한 동기화 작업은 필수다!

깃에 대해 좀 더 알고 싶다면,
기초) 커밋 , 브랜치와 관련된 다양한 명령어를 학습하고, 충돌에 부딪혀봐라.
심화) 브랜치 관리 전략을 학습하라. ex) git flow / github flow / gitlab flow 등

profile
실패의 경험들을 채워나가기!

0개의 댓글