면접을 보면서 면접관님께서 Git과 SVN의 차이를 물어보셨었는데, SVN을 쓴게 벌써 5년전일이 되어버렸다.. 막상 차이를 생각하니 떠오르지 않아서 정리를 다시한번 해보고 넘어가보려고한다. (오랫만의 Git 카테고리에 작성하는 글인듯)
SVN과 Git의 비교
SVN | Git | |
사용법 | 간단하며, 쉬움 | 다소 복잡하고 처음에는 학습하기 어렵다 |
기능 | 버전관리에 최적화된 간편한 기능 | 다양한 기능이 존재. 버전관리의 끝판왕이라 생각한다 |
프로세스 | 중앙 집중식 | 분산 관리식 |
소스 충돌 위험 | 매우 높다 | 권한 설정을 통해 충돌 위험 감소 |
저장소 백업 여부 | 저장소 백업이 용이하지 못함 | git 저장소만 있으면 Remote 복구는 언제든지 가능 |
다수 작업 관리 | 관리에 한계가 존재 | 분산 작업에 매우 용이하다 |
작업 내용 복구 | 불편함 | Revision으로 복구가 매우 편리 |
브랜치 생성 | 불편함 | 로컬에서 브랜치 생성 및 태그 생성이 매우 편리하다 |
SVN은 linux에 거의 디폴트로 설치가 되어있다. SVN 서버를 구축하는 경우, 설치와 구성이 어렵지 않다. (Windows에서도 사용하기 간편하다고 함) 2010년대 초반까지만해도 버전 관리 도구의 메인간판이라고 불리웠던 최고의 버전관리 툴이였다.
그러나, 그 왕좌는 바뀌고 말았다. Git 버전관리 툴 점유율이 급격하게 높아져서 현재도 현존하는 최고의 버전관리 툴로 자리메김하고 있다. 그에 맞춰서 github, gitlab, bitbuket과 같은 대형 클라우드 저장소도 만들어지기까지 했다. 왜이렇게 발전을 했냐하면, 정말 단순하게 좋은 기능들이 많기 때문이다. SVN과 비교했을때 가장 큰 차이점은 리모트 서버간의 종속성 차이이다. SVN은 반드시 리모트 서버를 두고 사용해야하지만, Git은 로컬, 클라이언트, 리모트 간에 종속되지 않는다. 로컬환경도 서버가 될 수 있고, 서버도 로컬이 될 수 있다. 이러한 차이 이외에 버전관리를 사용하면서 정말 다양한 기능들을 지원한다. rebase, revert commit, cherry-pick, squash, interactive rebase 등등..
정리한 git관련 기술들은 아래의 링크에서 확인이 가능하다.
= https://xggames.tistory.com/2 (git 기본편)
= https://xggames.tistory.com/11 (git 심화편)
그러나, Git은 많은 기능들이 따르는만큼, 처음에는 익숙해지는데 조금 어려울 수 있다. 하지만 협업, 파일백업 등 너무 매력적인 부분들이 많기때문에 개발자 필수코스라고 생각한다. 본인은 정리내용이외에 Git을 공부한다면 원숭이 깃 사이트를 추천한다.
누구나 쉽게 이해할 수 있는 Git 입문 링크 : https://backlog.com/git-tutorial/kr/intro/intro1_1.html
참고자료
'Git' 카테고리의 다른 글
Git - Branching Model (0) | 2021.02.25 |
---|---|
Git - 동작 정리 (심화편) (0) | 2021.02.17 |
Git - 동작 정리 (기본편) (0) | 2021.02.16 |