SVN과 Git의 가장 큰 차이점   

 

  하나의 버전을 만들기 위해 Git에서는 다음과 같은 과정을 진행합니다.

 

    1. 변경서항을 선택(add) - 스테이지에 올리는 작업

    2. 선택한 변경사항을 하나로 묶어 버전으로 만들기(commit)

  

  하지만 커밋 객체에 변경사항의 묶음이 저장되어있지 않다. 변경사항만 부분적으로 저장하는게 아니라 변경된 파일이 통째로 저장되어 있다. 바뀐 것만 저장하면 될 것 같은데 왜 용량을 더 차지하게 파일을 전부 저장할까?

 

  Git이 등장하기 전에는 SVN(SubVersion)과 같은 버전 관리 시스템이 제일 많이 쓰였다. 이 둘의 가장 큰 차이점은 아래 그림과 같이 변경사항만 저장하는가이다. 

 

 

 단순하게 생각하면 전체를 저장하는 Git보다는 차이점만 저장하는 SubVersion 방식이 용량 면에서도 좋고 속도도 빠를 것 같지만 조금 더 생각해보면 SubVersion 같은 방식은 버전을 보여줄 때 파일이 만들었던 맨 처음부터 거슬러 올라가 바뀐 점을 모두 반영해야 한다는 불편함이 있다.

 

 예를 들어, SubVersion에서는 README.txt 파일이 백 번 바뀌었다면 백 번의 계산을 모두 해야한다. 하지만 Git은 바로 앞에서 바뀐 커밋이랑 비교하는 연산 한번 만 하면 된다. 그리고 바뀌지 않은 파일은 링크만 저장하기 때문에 용량도 적고 계산하지 않아도 된다. 

 

 

   버전관리란 무엇인가?   

 

 한번쯤은 다들 Ctrl + Z를 이용하여 작업한 것을 전 단계의 시점으로 수정해본 적이 있을 것이다. 이전 단계로 되돌리는 것을 넘어서 내가 원하는 시점(버전)으로 이동할 수 있게 해주는 것버전 관리 혹은 소스 관리라고 한다.  이러한 "버전"을 통해서 시간적으로 변경 사항과 그 변경 사항을 작성한 작업자를 추적할 수 있다.

 

 

   버전관리가 왜 필요할까?   

 

 물론, 개인 컴퓨터에서 혼자 작업하고 변경하는 프로그램이라면 버전 관리가 필요없다. 개인이 작업해 놓은 것을 기억할 수 있고 남에게 알릴 필요도 없기 때문이다. 하지만, 팀 단위에서의 작업은 얘기가 달라진다. 팀 프로젝트에 참여 인원수가 많고 프로젝트의 범위가 넓어지고 기간이 길어질 경우에 에러가 발생했을 때의 지점을 확인하려고 하면 확인할 길이 막막해진다. 따라서, 여럿이 함께 작업하는 협업 프로젝트에선 버전 관리가 필요하다.

 


 

   Git의 등장   

 

 

 위에서 설명한 것들은 소스코드 버전 관리 시스템인 git을 통해 버전 관리가 가능해졌다. git은 데이터를 저장할 공간만 있으면 어디서나 사용할 수 있다. 이처럼 git으로 관리하는 프로젝트를 올려둘 수 있는 git 호스팅 사이트에는 github, gitlab, bitbucket 등 여러가지가 있다. 이 중에서도 github는 전 세계 최대 규모의 호스팅 사이트이다. github에 프로젝트를 오픈 소스로 만들면 전 세계 개발자와 협업할 수 있다. 

 

 

   Git 설치   

 

  (1) 윈도우

 

     1. https://git-scm.com/downloads에 접속해서 Download 버전 for Windows를 클릭한다.

     2. 설치 팝업창이 뜨면 [Next]버튼을 누르고 마지막 설치 화면에선 [View Release Notes]를 체크하지 않고

        [Finish] 버튼을 클릭해서 설치를 완료한다.

     3. git bash를 실행해 명령어 창에 git을 입력 후 제대로 출력되는지 확인한다. 

 

 

  (2) 맥/리눅스/유닉스

 

    1. https://git-scm.com/downloads에 접속해서 Download 버전 for 맥/리눅스/유닉스를 클릭한다.

    2. terminal을 실행해 명령어 창에 git을 입력 후 제대로 출력되는지 확인한다.

       (윈도우처럼 git bash를 설치하지 않고도 기본 터미널에서 CLI로 git을 다를 수 있다.)

'버전관리 > Git' 카테고리의 다른 글

2. 로컬, 원격저장소 만들고 활용하기  (0) 2020.08.27