Git과 SVN의 차이

git을 접하는 사람들 중에는 svn을 써본 사람들도 어느 정도 있을 것이다. 그런 사람 중의 한 사람이 나인데, 사실 처음엔 git이 뭐 얼마나 대단하다고 이 난리지?!

그저 버전 관리 시스템 중 하나 일 뿐 아니냐라는 우물안 개구리 같은 소리를 한 흑역사가 있다.

그럼 git과 svn의 차이는 무엇인가?


Git이란?

  • DVCS1
  • 내 컴퓨터에 로컬 저장소가 있고(commit, logging속도가 빠름, because not via networking)
  • 내 로컬 저장소에서 마음대로 실험하고 테스트 할 수 있어 커밋의 부담이 없음
  • 다른사람과 공유할 수 있는 원격저장소가 있음
  • 원격저장소와 연결이 끊겨도 계속 버전관리가 가능
  • 원격저장소가 날아가도 로컬저장소의 내용으로 복구 가능
  • 로컬 저장소 이전에 스테이지 영역(인덱스)가 있음
  • 스테이지 영역에 커밋할 파일들을 하나하나 추가
  • 단위별 목표가 있어 개발을 했으나 일부 기능은 반영하지 않는다면? 커밋할 파일들만 add index
  • 커밋이 끝나면 push로 원격저장소로 보냄
  • 파일의 차이를 저장하는 것이 그 순간을 저장하는 스냅샷

SVN이란?

  • VCS2
  • 보통 서버에 저장소가 있음
  • 저장소와 연결이 끊기면 버전관리가 안됨
  • 파일의 차이를 저장
  • 체크아웃시 모든 변경 내역을 내려 받음
  • 단위별 목표가 있어 개발을 했으나 일부 기능을 반영하지 않는다면? 따로 복사를 해놓고 되돌려야 함
  • 브랜치는 단순히 폴더 구조
  • 전체 파일을 네트워크를 통해 통째로 내려받기에 느리고 부담
  • 브랜치나 태그 기능이 필요하지 않고, 관리하는 파일의 규모가 작고 오래된 리비전에 접근하는 일이 거의 없을 때 사용해도 무방

이전 프로젝트에서 svn의 서버가 다운되서 버전 관리를 할 수 없었던 적이 있었다. 그때 만약 git을 사용하고 있었다면? 나는 나대로 내 작업을 진행하면 되기 때문에 큰 불편을 겪진 않았을 것 이다.


svn 능력자들을 위한 git 가이드

1. Distribute Version Control System
2. Version Control System

results matching ""

    No results matching ""