Git&GitHub/Git

버전관리란?

Fletcher 2024. 7. 8. 11:04

※때에 따라서 소프트웨어 또는 프레임워크의 버전 및 인터페이스에 대해,

조회하시는 시간과 본 포스트 작성의 시간적 격차가 있는 경우

해당 설명과 상이한 부분이 있을 수 있습니다!

 

 

 

안녕하세요 이번 포스트부터 Git과 GitHub에 대해서 살펴보겠는데요

Git 또는 GitHub라는 말을 많이 들어보셨을겁니다 ^^

Git은 무엇이고, GitHub는 무엇일까요?

 

Git에 대해 이야기하기 이전에, 먼저 버전 관리(VCS, Version Control System)가 무엇인지 부터 알아야 할 것 같습니다

 

 

 

최종 지옥에 빠져버린 어느 팀의 작업물?

 

개인 또는 팀 단위로 작업을 할 때, 하루 아침에 뚝딱 하고 완벽한 결과물이 나오는건 아닙니다

짧게는 1달, 길게는 수 개월을 작업에 몰두하면서 조금씩 조금씩 살을 덧붙여나가죠

또한 고객의 추가 요구사항에 따라서, 또는 Confirm 여부에 따라서 수많은 수정 작업들도 필요로 합니다

 

그 때마다 통일된 규칙 없이 제목만 바꿔가면서 무수히 많은 파일들을 한 폴더 안에 욱여넣어서 관리를 해야할까요?

물론 이런 것도 방법 중에 하나이긴 합니다만,

각 파일과 파일들 사이의 변경 사항을 파악하는 데에 효율적일 수 있을까요?

 

또한, 나 혼자만의 작업물이라면 위와 같은 방법으로도 얼레벌레 어떻게든 해결할 수는 있겠어도

팀 단위로 작업을 하면서 팀원들이 수십 명이 되는 대규모 프로젝트라면

과연 각 팀원들마다 어떤 내용을 추가했고 변경했는지 일일히 파일을 뜯어보면서 파악할 수 있을까요?

 

 

출처 https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EB%B2%84%EC%A0%84-%EA%B4%80%EB%A6%AC%EB%9E%80%3F

 

사람이 한 땀 한 땀 코드를 추적하는 것보다

컴퓨터(하나의 소프트웨어)가 알아서 추적해주고 기록하는게 더 효율적이겠죠?

그래서 VCS(Version Control System, 버전 관리 시스템)가 필요했습니다 ^^!!

 

상기 이미지에 소개되어 있는대로,

파일을 수정 전의 상태로 롤백 할 수도 있고, 누구의 코드가 문제를 일으켰는지 파악할 수도 있고,

누가 언제 어떻게 만들어낸 이슈인지도 모두 기록이 되기 때문에 파악하기에 용이합니다!!

 

 

 

그리고 작업을 할 때마다 수많은 버전 변경 기록들이 저장 될텐데,

이것들을 일괄적으로 또 체계적으로 정리해놓을 무언가가 필요하겠죠?

그래서 아주 간단한 데이터베이스를 이용해서 로컬에서 버전 관리를 할 수 있는데요 ^^!

 

크게

①중앙집중식 버전관리

②분산 버전관리 시스템

두 가지로 나눌 수 있겠습니다 ^^

 

 

 

1. 중앙집중식 버전관리

출처 https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EB%B2%84%EC%A0%84-%EA%B4%80%EB%A6%AC%EB%9E%80%3F

 

간단히 말하면, 관리자 1명이 버전을 관리하고

작업자들은 그 버전의 데이터를 복사해가서 작업하는 방식입니다.

 

사공이 많으면 배가 산으로 간다고, 각자가 따로 분리해서 관리하는게 아니라

중앙에서 일괄적으로 관리를 하고 작업자들은 필요할 때마다 복사해가서 사용하면 되니까 효율적이겠죠?

하지만 양날의 검과 같은 것이, 이 중앙 서버에 문제가 생기면 모든게 끝장 나버립니다.. ^^;;;

 

 

 

2. 분산 버전관리 시스템

출처 https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EB%B2%84%EC%A0%84-%EA%B4%80%EB%A6%AC%EB%9E%80%3F

 

이제는 파일만 가져가는게 아니라 버전 관리 데이터베이스를 통째로 Clone하는 방식입니다

그럼 중앙 서버에 문제가 생겨도 클라이언트가 Clone해 간 데이터를 넘겨 받으면 복구가 가능하겠죠?

 

 

 

정리하자면,

수많은 사람들이 공동 작업을 할 때 수정사항 등을 기록으로 철저히 남겨서

추적이 가능하게끔 해주는 "버전 관리"라는 방법이 있고

Git이란 것은 이 버전 관리를 해주는 소프트웨어입니다!

 

 

코드와 논리로 이야기하고 가치를 창출하는 개발자들에게 있어서

버전 관리 시스템이란 것이 얼마나 축복인지 다들 아실거라 생각합니다 ^^!!

 

이번 포스트에서는 Git 소프트웨어 공식 홈페이지의 Document를 참고하여

"버전 관리"가 무엇인지에 대해 조금 나눠보았습니다

 

다음 포스트부터 본격적으로 Git에 대해서 이야기해볼텐데요

드넓은 개발의 세계를 항해하시는 모든 분들 항상 건승하시고 행복하시기 바랍니다 ^^!!