소프트웨어 엔지니어/일반

[소프트웨어 엔지니어] git ? 버전관리

shroomie 2024. 8. 16. 12:10

요샌 버전관리 하면 전부 git 을 떠올리는데...이게 왜 필요한걸까?

버전관리가 뭔지 부터, 예를 들어 설명해보자. 
너가 채팅프로그램을 만들었어. 
잘 동작하고 있었는데 어떤수정을 하자마자 갑자기 동작을 안해. 난리나겠지?
이럴때 가장 좋은 방법은 일단 잘 동작하고 있던 시점으로 프로그램을 돌려놓고 (즉 일단 동작하게 해놓고)
그 다음 빠르게 해결하는거지. 

(물론 브랜치를 개발용, 프로덕트용, 등등으로 나눠서 저런일은 드물지만, 여기서 설명하고자하는게 그건 아니니까)

 

가능한방법은, 아래와 같이 시점을 정해놓고 (그게 폴더이건 git 같은 프로그램을 쓰던)

시점 1. 동작하던 시점이 언제이고 어떤 코드인지 저장. 
시점 2. 너가 수정한 코드는 어떤파일에 어떤부분을 고친것인지 저장
시점 3. 남이 혹시 수정한 코드는 어떤파일이고 어떤부분이고 저장 
이렇게 해 놓으면, 상황에 따라 , 시점 1로도 2로도 3으로도 갈수 있지.

(어느게 누구에 의해서 바뀌었는지도 잘 머리를 굴리면 알수 있을꺼고)  

이게 소프트웨어에 버전관리 개념인거야.

 

이걸 가능하게 하는 방법중 가장 간단한 방법은(?)

저 시점대로 프로그램을 통째로 복사해서 시점 1 폴더, 시점 2 폴더, 시점 3 폴더 보관하는거지.
프로그램이 파일몇개 안되고, 작업하는 사람도 몇명안되면 상관없는데,

문제는, 복잡하고 많은 파일을 수십, 수백명이 작업할 경우에는 파악이 힘들거나 불가능하다는거야.

 

딱 봐도 버전관리가 중요해 보이니, 너도나도 자동화 툴을 만들지 않았을까?
당연히 IBM 같은 큰회사들도 이런 소프트웨어 버전관리 시스템: Rational ClearCASE을 만들었고 (나도 현업에 있을때 썻었지. 20년 전에?) SVN, CVS 등등 여러 버전관리 소프트웨어들이 있었지. 

그런다 리누스 토발스가 Git 이라는 버전관리 시스템을 만들었는데 (2005년)

(참 저분은대단한듯, 나같음 원래 대기업들이 만든거 그냥 가져다 쓸껀데... 본인이 또 만들어 그걸..) 

오픈소스인데다 이래저래 사용하기편해(?) 서,  
지금은 거의 모, 버전관리 하면 Git 이럴 정도로 많이 쓰이고 있어. (공짜라서 그런가..)  


너무 시스템이 오래되었거나 특별한이유때문에 쓰던걸 (SVN , Clearcase 등등) 계속 써야 하는상황이 아니라면, 
버전관리? 그냥 Git. 쓴다고 생각해도 무방할듯.

 

그런데, git 을 쓰더라도, 한가지 귀찮은게,

버전관리를 하려면, 소프트웨어를 저장할수 있는 장소도 있어야 할꺼고 컴퓨터도 있어야 한다는 점이야.

오픈소스니까 내 pc 에다가 깔아서 쓰고, 아님 회사 서버에다 깔아서 개발자들끼리 같이 써도 되지만, 

관리를 해야 하잖아, 서버도 그렇고 git 프로그램 설치서부터 등등. 

 

그래서, 이 귀찮은걸  서비스해주는 회사가 등장한거고,

그 회사들이 내 놓은 서비스가 , github , gitlab, bitbucket 등등인거야. 

(프로그램을 만든다 -> 이걸 버전관리 위해서.  깃헙, 깃랩, 빗버킷중에 하나를 이용한다  . 이게 요새 표준인듯)

  
참고로, 어느서버스를 쓰더라도 기본이 git 이라 명령어는 다 똑같아.

git clone, git status, git add, git commit ,... 편하겠찌? git 하나만 알면되니까. 

 

추천공짜도서: 구글에 progit 이라고 검색하고 읽어봐. 이거만 다 읽고 이해하면 git 에 도사가 되어 ,

어느 회사 제품을 쓰더라도 버전관리에서는 막힘이 없을꺼야. 

'소프트웨어 엔지니어 > 일반' 카테고리의 다른 글

tcp/ip, http, ? 프로토콜 (protocol) ?  (0) 2024.08.19
윈도우7, 윈도우10, 리눅스 ?  (0) 2024.08.16
Rest API, Open API?  (0) 2024.08.15
아직도 C, C++ 쓴다고?  (0) 2024.08.14
프로그램 디렉토리 구조?  (1) 2024.08.09